- ベストアンサー
ヘッダーの中でヘッダーをインクルードすると?
「自作ヘッダーAの中で別の自作ヘッダーBをインクルードする」 という事はどういう意味になり、どういう事が起こるのでしょうか? 「自作ヘッダーAの中で別の自作ヘッダーBをインクルードする」と 自作ヘッダーAの中で、 Bをインクルードした位置より下に定義した定数や構造体は 未定義とエラーが出てしまいます。 (は2回以上自作ヘッダーAをインクルードした時のみですが。) なぜこのような症状が現れるのでしょうか? >コンパイラ:VC++ 2008 EE
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
動作としては単にAのテキストの #iinclude "B.h" の位置にB.hのテキストが展開されるだけです。 恐らくBの中にエラー若しくは実行部があるものと思われます。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
何行目のなんという識別子が定義されていないか, は多分エラーメッセージに出てますよね. ここに内容が書けないなら, そのようなメッセージから自力でなんとかしてください. 場合によってはプリプロセスした結果を見て確認.
お礼
ありがとうございました。
- asuncion
- ベストアンサー率33% (2127/6289)
>「自作ヘッダーAの中で別の自作ヘッダーBをインクルードする」 >という事はどういう意味になり、どういう事が起こるのでしょうか? ヘッダーAの中に、ヘッダーBの中身に相当する内容を直接書いたのと同じ効果を発揮します。 >Bをインクルードした位置より下に定義した定数や構造体は >未定義とエラーが出てしまいます。 本当に未定義ですか? 多重定義とかではなくて、ですか? このあたりは具体的な内容を見ないと何とも言えませんので、 どんなヘッダーファイルを書いて何をしたときに何というエラーメッセージが出たかを あますところなく書いてください。
お礼
>ヘッダーAの中に、ヘッダーBの中身に相当する内容を >直接書いたのと同じ効果を発揮します。 そうなのですね。勉強になりました。 あとエラーは、カッコ閉じの部分の条件込みで >error C2065: '' : 定義されていない識別子です。 というものでした。10近いヘッダーなので今回は あますところなく はご勘弁願います。
お礼
ご回答ありがとうございます。 私のC/C++の理解不足で 中に「実行部」というものが有るんでしょうね。 もっと幅広い知識を付けないとそれを区別できなさそうです。 ありがとうございました。