#pragma once
pragma 指令の概要:インデックス への移動
構文 (「疑似文法」を参照)
#pragma once
説明
#pragma once は、ヘッダー ファイルが何度もインクルードされないようにするためのプリプロセッサ指令です。 #pragma once 指令がファイルに含まれていると、そのファイルは現在のプロジェクトに何度もインクルードされることはありません。
例
#pragma once が役に立つ理由としては、たとえば、ファイルで別のヘッダーをインクルードするだけで十分だという事実が挙げられます。 この指令を使用できる論理的な例については、以下のコードを参照してください。
Vertex.h
#pragma once
struct Vertex{
int x_coord;
int y_coord;
int z_coord;
};
Triangle.h
#include "Vertex.h"
struct Triangle{
Vertex p1;
Vertex p2;
Vertex p3;
};
Square.h
struct Square{
Vertex v1;
Vertex v2;
Vertex v3;
Vertex v4;
};
Drawing.cpp
#include <vcl.h>
#include "Triangle.h"
#include "Vertex.h"
int main()
{
//a triangle
Triangle tr0;
//a square
Square sq0;
return 0;
}
Triangle.h でも Square.h でも 3 次元空間での位置を知るために Vertex 構造体が必要なため、どちらも Vertex.h をインクルードします。 Triangle.h と Square.h はどちらもメインの .cpp ファイル でインクルードされるため、この指令がなければ、Vertex.h ファイルは 2 回(Triangle.h と Square.h で 1 回ずつ)インクルードされることになります。 Vertex.h で #pragma once を使用すると、プリプロセッサはこのファイルを 2 回目はインクルードできません。 その結果、エラーは出力されません。
メモ: これと同じことは
#ifndef/#define/#endifでも実現できます。これは、二重インクルードの問題に対処するため ANSI 標準で採用されている方法です。