Globale Konstanten in C++
Aktualisiert: November 2007
Global Constants in C++
Globale Konstanten in C++ sind anders als in C statisch verknüpft. Wenn Sie in C++ versuchen, eine globale Konstante in mehreren Dateien zu verwenden, erhalten Sie einen Fehler aufgrund eines unaufgelösten externen Verweises. Globale Konstanten werden durch den Compiler optimiert, sodass kein Platz für die Variable reserviert ist.
Eine Möglichkeit zur Behebung des Fehlers besteht darin, die const-Initialisierungen in eine Headerdatei einzufügen und diesen Header – so als würde es sich um einen Funktionsprototyp handeln – ggf. in die CPP-Dateien einzulesen. Alternativ können Sie die Variable als nicht konstante Variable erstellen und einen konstanten Verweis verwenden, wenn sie darauf zugreifen.
Im folgenden Beispiel wird C2019 generiert:
// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;
int main() {
test();
}
und anschließend
// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;
void test() {
int i = lnktest1; // LNK2019
}