#pragma once oder #ifndef?
-
Hallo
was ist denn der Unterschied zwischen#pragma once
und
#ifndef _IRGENDWAS_H #define _IRGENDWAS_H . . #endif
Ist das beides dasselbe?
-
Im MSVC wirst du keinen Unterschied feststellen, aber imho ist "#pragma once" kein Standard und somit kanns bei anderen Compilern dann plötzlich Probleme geben...
MfG SideWinder
-
Ich habe mal gelesen, dass der MSVC deutlich schneller kompiliert mit #pragma once., weil die Headerdatei nur einmal durchkompiliert wird.
-
Specifies that the file will be included (opened) only once by the compiler in a build. This can reduce build times as the compiler will not open and read the file after the first #include of the module.
Sieht wohl so aus. Ist ja eigentlich auch viel schöner als die include-Guards.
-
Soviel bringen kann das eigentlich nicht. Das was zwischen #ifdef und #endif steht wird ja nicht compiliert, sondern nur gescannt und dann verworfen.
-
Ist das jetzt MSVC-Only oder Standard?
MfG SideWinder
-
Ich verwende immer #pragma once und vorkompilierte Headerdateien, damit ich möglichst
kurze Kompilierzeiten hab.
-
SideWinder schrieb:
Ist das jetzt MSVC-Only oder Standard?
MSVC Only
#pragmas sind alle non standard - dafür gibt es sie ja
-
btw. kann man doch auch beides kombinieren. Um das pragma am besten noch ein ifdef ob es sich um den MSVC handelt und schon ist man auch zu anderen Compilern kompatibel. Wow, kostet nur wenige sekunden und spart später eine Menge arbeit
-
Na dann muss ich die ja erst wieder mit einem #ifdef MSVC schützen, was soviel heißt wie ich spare mir wahrscheinlich gar nichts.
@SirLant: Kann dann aber auch gefährlich werden wenn du deine Headerdateien weitergibst.
MfG SideWinder
-
Wieso der MSVC liest das #pragma once ja trotzdem, andere Compiler nur, wenn du dort
das entsprechende #define einfügst.Wenn ich eine Bibliothek schreibe, dann mache ich das natürlich nicht Compilerspezifisch, sonstige Programme entwickel ich, aber sowieso nur für den VC da ich fast immer die MFC benutze, nur ganz selten mal nen Konsolenprojekt.