#pragma onceの使用

701 ワード

以下の内容を抜粋するhttps://zh.wikipedia.org/wiki/Pragma_once
CおよびC++プログラミング言語では、#pragma onceは非標準で広くサポートされているプリプロセッシングシンボルであり、存在するファイルは1つの個別のコンパイルに1回しか含まれません.このように、#pragma onceはincludeのような防犯の目的を提供するが、コードが少なく、名前の衝突を回避することができる.#pragma onceをincludeの代わりに使用すると、これはハイエンドのメカニズムであるため、コンパイル速度が速くなります.コンパイラは、ヘッダファイルで#ifndefおよび#endifを判断する必要がなく、ファイル名またはinodeを自動的に比較します.
一方、GCC、clangなどの一部のコンパイラには、include防犯を識別し、効率的に管理するための特別なコードも含まれています.したがって、#pragma onceを使用しても明らかな加速は得られない.
さらに、コンパイラ自身が管理#pragma onceを負担しなければならないため、include防犯文書例のH_GRANDFATHERのような新しい命令名を定義する必要はない.これにより、名前の衝突のリスクが排除されます.つまり、少なくとも最初にヘッダファイルを含めても間違いはありません.