重複の可能性:
#pragma-理解に役立ちます
私はpragma何度も見ましたが、いつも混乱しています、誰もがそれが何をするのか知っていますか?それは窓だけですか?
C および C++ プログラミング言語では、#pragma once は標準ではありませんが広くサポートされているプリプロセッサ ディレクティブであり、現在のソース ファイルを 1 回のコンパイルで 1 回だけインクルードするように設計されています。したがって、#pragma は #include ガードと同じ目的を果たしますが、コードの削減、名前の衝突の回避、コンパイル速度の向上など、いくつかの利点があります。
詳細については、ウィキペディアの記事を参照してください。
次のプリプロセッサ コードを置き換えるために使用されます。
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
従来のコンパイラをサポートするために両方を追加することをお勧めします (これはめったにありません)。
#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
したがって、#pragma once が失敗した場合でも、古い方法は引き続き機能します。
通常、#pragmaディレクティブは、コンパイラ固有のプリプロセッサ命令を実装することを目的としています。それらは標準化されていないため、過度に依存するべきではありません。
この場合、#pragma onceの目的は、ヘッダー ファイルで使用するインクルード ガードを置き換えて、複数のインクルードを回避することです。それをサポートするコンパイラでは少し速く動作するため、#include頻繁に実行される多数のヘッダー ファイルを含む大規模なプロジェクトのコンパイル時間が短縮される可能性があります。
pragma は、プリプロセッサへの指示です。通常、コンパイル中に追加の制御を提供するために使用されます。たとえば、同じヘッダー ファイル コードを含めないでください。さまざまなディレクティブがたくさんあります。答えは、プラグマ ワードの後に何が続くかによって異なります。