コンパイラがヘッダーファイルを開かずにヘッダを見ることができるので、ヘッダーの最初の行は常に#includeガードにする必要があります(リンクはもう見つけられません)。したがって、ヘッダーファイルが既に含まれている場合は、ファイルを再び閉じるためにファイルが開かれず、ビルド処理が高速化されます。
しかし、私はいつもすべてのファイルの先頭にコメントブロックを持っています。だから私の質問は、#ブロックがコメントブロックの前に書かれなければならないということですか?コメントブロックの前後にガードが含まれていますか?
が良く、このスタイルです:
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
#ifndef CODE_H_
#define CODE_H_
...
#endif
またはこのスタイルISTよりよい:
#ifndef CODE_H_
#define CODE_H_
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
...
#endif
それとも全く問題ではありませんか?私の経験から
実際に安全なナノ秒を望むなら、最初の可能な場所に書き込む必要があります。 ;)そのようなことは、すべてのソフトウェアの人生にとって本当に重要です。それがあなたが持っている最も重要な問題の1つであれば、あなたは非常に良い立場にあります! BTW:コンパイラはファイルをとにかく開く必要があります...インクルードガードは他の場所には表示されません。 – Klaus
@Klaus私はこれが本当に大きなことではないことを知っていますが、私はただ好奇心を持っています。 :) –
の前に。プリプロセッサが処理しなければならない線が少ないほど良い。私はコンパイラ(Watcom)を使って直接的な行数を表示していましたが、それは常に1:100以上の比率でした。 – EJP