Freigeben über


Globale Konstanten in C++

Globale Konstanten in C++ sind anders als in C statisch verknüpft. Dies unterscheidet sich von C. 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
}

Siehe auch

Referenz

Linkertoolfehler LNK2019