Ist #pragma einmal Teil des C ++ 11 Standards?

Traditionell, standard und portable Weg, um zu vermeiden, mehrere header-Einschlüsse in C++ war/ist die Verwendung der #ifndef - #define - #endifpre-compiler-Direktiven-Schema auch als makro-guard-Schema (siehe code-snippet unten).

#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif

In den meisten Implementierungen/Compiler (siehe Bild unten) jedoch gibt es eine "elegante" alternative, die demselben Zweck dient wie die makro-guard-System namens #pragma once. #pragma once hat mehrere Vorteile im Vergleich zu den makro-guard-System einschließlich weniger code, der Vermeidung der name-clashes, und manchmal verbessert kompilieren Geschwindigkeit.

Ist #pragma einmal Teil des C ++ 11 Standards?

Etwas Forschung zu tun, ich erkannte, dass, obwohl #pragma once Richtlinie wird unterstützt, indem fast alle bekannten Compiler, es ist eine turbidness, ob #pragma once Richtlinie ist Teil der C++11-standard oder nicht.

Fragen:

  • Könnte jemand klären, ob #pragma once Richtlinie ist Teil der C++11-standard oder nicht?
  • Wenn es ist nicht Teil des C++11-standard, gibt es irgendwelche Pläne, einschließlich es auf späteren Veröffentlichungen (z.B., C++14 oder höher)?
  • Es wäre auch schön, wenn jemand könnte, näher auf die Vorteile/Nachteile bei der Verwendung einer der Techniken (d.h., makro-guard gegen #pragma once).

InformationsquelleAutor der Frage 101010 | 2014-05-16

Schreibe einen Kommentar