Welchen Sinn haben diese "defines" ?
-
Guten Morgen Peoplez,
Hab schon oft im Kopf beliebiger Headerdateien Definitionen folgender Art gesehen.#ifndef OSGMESHIO_H #define OSGMESHIO_HDiese "defs" heißen dann meist auch so wie die betroffene Klasse(In diesem Beispiel gefolgt von einem "_H").
Wofür braucht mann diese ?Danke
Blue
-
Diese #define's nennen sich im allgemeinen Sprachgebrauch "Include Guard" - und sollen verhindern, daß ein Header mehrfach in die selbe Übersetzungseinheit eingebunden wird.
-
Da gibt es doch aber auch noch dieses "#pragma once".
Hat dessen Verwendung nicht auch den von dir beschriebenen Effekt ?Den oben beschriebenen Codezeilen folgen diese Zeilen:
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000Anscheinend ist es wohl von der Version des Compilers abhängig welche Variante man verwendet ?
Thx
-
Blue5teel schrieb:
Da gibt es doch aber auch noch dieses "#pragma once".
Hat dessen Verwendung nicht auch den von dir beschriebenen Effekt ?#pragma once ist nicht Standard. Wird aber dennoch von den meißten Compilern richtig erkannt.
Blue5teel schrieb:
Den oben beschriebenen Codezeilen folgen diese Zeilen:
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000Kann man machen ist aber optional. Gilt nur für Microsofts Visual ...
-
Blue5teel schrieb:
Da gibt es doch aber auch noch dieses "#pragma once".
Hat dessen Verwendung nicht auch den von dir beschriebenen Effekt ?Ja, "#pragma once" bewirkt das selbe - wenn es der Compiler unterstützt (und dann ist es idR etwas schneller, weil der Compiler/Präprozessor den betroffenen Header wirklich nur einmal anfasst). Aber nicht jeder Compiler kennt es.
(die Version #ifndef X_H/#define X_H/.../#endif schluckt dagegen wirklich JEDER standardkonforme Compiler)
-
Ok,
danke Frau Rieger, jetz hab ich verstanden.
Danke
Blue