#pragma once

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Pragma-Direktiven (Übersicht) - Index

Syntax (siehe Pseudogrammatik)

#pragma once

Beschreibung

#pragma once ist eine Präprozessordirektive, mit der das mehrfache Einbeziehen von Header-Dateien verhindert wird. Wenn die Direktive #pragma once in einer Datei vorhanden ist, ist sichergestellt, dass die Datei nicht mehrfach in das aktuelle Projekt einbezogen wird.

Beispiel

#pragma once ist nützlich, weil eine Datei, die einen anderen Header einbezieht, ausreicht. Im Folgenden finden Sie ein logisches Beispiel, wie die Direktive verwendet werden kann.

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()
{
  //ein Dreieck
  Triangle tr0;
  //ein Quadrat
  Square sq0;
  return 0;
}

Weil sowohl das Dreieck als auch das Quadrat die Vertex-Struktur zur Festlegung ihrer Position im dreidimensional Raum benötigen, beziehen beide Vertex.h ein. Das Dreieck und das Quadrat werden auch in die Haupt-.cpp einbezogen, daher würde die Datei Vertex.h zweimal (von Triangle.h und von Square.h) einbezogen werden. Wenn Sie in der Datei Vertex.h #pragma once angeben, wird verhindert, dass der Präprozessor die Datei ein zweites Mal einbezieht, und es wird kein Fehler ausgelöst.

Hinweis: Mit #ifndef/#define/#endif wird dasselbe Ergebnis erzielt. #ifndef/#define/#endif ist das ANSI-Standardvorgehen für das Problem mit der doppelten Inklusion.