私は現在大きなプロジェクトに取り組んでおり、警備員を含むすべてを維持することは私を夢中にさせます!手で書くのは時間の無駄です。多くの編集者はインクルードガードを生成できますが、これはあまり役に立ちません。
エディタは、ファイル名に基づいてガードシンボルを生成します。この問題は、異なるディレクトリに同じファイル名のヘッダーがある場合に発生します。それらの両方が同じインクルードガードを取得します。ガードシンボルにディレクトリ構造を含めるには、マクロのスラッシュとバックスラッシュが最適ではないため、エディタからの凝ったアプローチが必要になります。
ファイルの名前を変更する必要がある場合は、すべてのインクルードガードの名前も変更する必要があります(ifndefで、define、理想的にはendifのコメント)。迷惑。
プリプロセッサは、それらが何を意味するのか見当がつかないまま、大量のシンボルで溢れています。
それにもかかわらず、定義は一度含まれますが、コンパイラーはヘッダーが含まれるたびにヘッダーを開きます。
インクルードガードは名前空間にもテンプレートにも適合しません。実際、それらは名前空間を破壊しています!
ガードシンボルが一意にならない可能性があります。
たぶん、プログラムが単一のディレクトリに1000未満のヘッダーを含んでいたとき、それらは許容できる解決策でした。しかし、最近は?それは古く、現代のコーディング習慣とは何の関係もありません。私が最も気になるのは、この問題は#pragmaonceディレクティブによってほぼ完全に解決できるということです。なぜそれは標準ではないのですか?