#pragma once

提供: RAD Studio
移動先: 案内検索

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 標準で採用されている方法です。