【Cpp】「redefinition of 'xxx'」エラーの原因の対策方法
目次
エラーの原因
読み込んでいるヘッダーファイルが重複しているから、1つだけ読み込むようにしてねというエラーです。
C++では同一のヘッダーファイルを読み込むことができません。C++のコンパイルの仕組み上、単純にファイルを展開しているので同一の内容があるとコンパイル時に同一の関数や変数が見つかり予期しない動作になる可能性があったり、ヘッダーファイル同士の相互インクルードによる無限ループが起こっていしまうので、エラーになります。
そのため、コンパイルが始まる前にヘッダーの重複インクルードチェックが行われ、そのときに発生するエラーになります。
対策方法
ヘッダー部分に#pragma once
と記述することでヘッダーファイルを1度だけインクルードすることを強制することができます。
1 |
|
昔の方法
私が昔C++を学んでいたときは、以下の書き方でインクルードガードを行っていました。
この方法の欠点として、define
が他のファイルで衝突してしまう可能性がありました。(まあ、ファイル名をdefineにすれば問題はないと思うのですが)
どちらにせよ、効果としては#pragma once
と同じなので、1行でシンプルに記述できる#pragma once
を使っておけばいいかと思います。
1 |
|
【Cpp】「redefinition of 'xxx'」エラーの原因の対策方法
https://blog.djima.net/2021/10/01/【Cpp】「redefinition-of-xxx-」エラーの原因の対策方法/