Alle meine Header-Dateien verwenden umfassen Wachen sowie Pragma einmal:Kann "#pragma once" Fehler verursachen?
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Ich verstehe, dass Pragma einmal nicht Standard ist, und kann nicht die gleichen über Compiler sein, aber gibt es eine Chance wird es verursachen und Fehler? Wäre es besser, irgendwie zu testen, ob es zuerst verfügbar ist?
#ifdef THIS_COMPILER_SUPPORTS_PRAGMA_ONCE
#pragma once
#endif
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Ich möchte Pragma einmal als Option zur Verfügung zu stellen Name-kollidierende möglicherweise Beschleunigungs-Kompilierung und zu vermeiden, während immer noch die Kompatibilität zwischen Compiler bereitgestellt wird.
Ich weiß wirklich nicht, C/C++, aber [dieser MSDN-Artikel] (http://msdn.microsoft.com/en-us/library/d9x1s805%28v=vs.71%29.aspx) scheint darauf hinzudeuten, dass unerkannte ignoriert werden. – Ryan
möglich Duplikat von [Ist #pragma einmal ein sicherer Wächter?] (Http://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard) –
Siehe auch [Warum nicht C/C++ #pragma einmal ein ISO-Standard?] (Http://stackoverflow.com/questions/1695807/why-istn-c-cs-pragma-once-an-iso-standard) –