組み込みガードを使用しないで再コンパイルエラーを回避したい場合、依存ツリーがそれでなければならない基本ルールは1つ以上のツリーのみです。組み込みガードを含まない再コンパイルエラーの回避
親が2つの異なる方法に達することができるときは、違反が発生しますか?例えば
:
declarations.hが
data.cがdata.h
ui.cはdata.h含み、
をstring.hの含むdeclarations.h string.hの
data.hが含ま含ま
これは、ui.cとstring.hの両方に2つの異なる方法(直接およびdata.h経由)が含まれているため、再宣言エラーを生成します。したがって、ui.cには同じ親への複数のパスがあるので、構造体はツリーではありません。
同じ親に複数のパスを持ち、再宣言エラーを受け取らない方法はありますか?
私はそれを取得しません。あなたはあなたの前提と本当の質問をより明確に述べてください。 –
ユニークな依存関係ツリーよりもユニークなインクルードガードを思いつくほうが簡単かもしれません。あなたは本当に何をしようとしていますか? –
自分の人生を楽にしてください。あなたが書いたすべてのヘッダーファイルに常に 'guard guards'を使用してください。簡単ですが、インクルードガードには _hを使用してください。 '#ifndef _h #define _h'とファイルの最後に' #endif'というシステムヘッダファイルを見てください。これらの3行は、ヘッダファイルに 'includeガード ' –
user3629249