Avatar ·

#pragma once vs Include Guards: Was wählen zum Schutz vor doppeltem Einfügen?

Hallo zusammen! Ich bin ein Anfänger in C++ und bin schon mehrmals auf das Problem des doppelten Einfügens von Header-Dateien gestoßen. Zum Beispiel habe ich diesen Code:

\n\n
// math_utils.h\n#ifndef MATH_UTILS_H\n#define MATH_UTILS_H\n\nint add(int a, int b) { return a + b; }\n\n#endif\n\n// main.cpp\n#include "math_utils.h"\n#include "math_utils.h"  // versehentlich zweimal eingefügt\n\nint main() {\n    return add(2, 3);\n}\n
\n\n

Mit include guards funktioniert alles, aber mir ist aufgefallen, dass viele moderne Projekte (z.B. aus Boost) #pragma once verwenden. Ich habe gelesen, dass dies eine nicht standardisierte Direktive ist, aber sie wird von allen wichtigen Compilern unterstützt.

\n\n

Mich interessiert:

\n
    \n
  • Gibt es echte Performance-Probleme bei include guards?
  • \n