Ich habe Code wie diesen normalerweise am Anfang von Header-Dateien gesehen:
#ifndef HEADERFILE_H
#define HEADERFILE_H
Und am Ende der Datei steht
#endif
Was ist der Zweck davon?
#pragmaist: Es aktiviert eine compilerspezifische Funktion. Obwohl #pragma oncees sehr weit verbreitet ist, ist es nicht Standard.
info cppoder hier ) heißt es: "Sie wird nicht von allen Präprozessoren erkannt, sodass Sie sich in einem tragbaren Programm nicht darauf verlassen können." Und GNU cpp optimiert die gängige und tragbare Sprache #ifndefso effizient wie möglich #pragma once.
#ifndef HEADERFILE_HKann subtiler den Namespace der Implementierung verletzen, mit dem der Headername anfängt E; Bezeichner, die mit Eund eine Ziffer oder ein Großbuchstabe beginnen, sind vorbehalten <errno.h>. Ich schlage vor #ifndef H_HEADERFILE.