Globální konstanty v jazyku C++
Globální konstanty jazyka C++ mají statické propojení. To se liší od jazyka C. Pokud se pokusíte použít globální konstantu v jazyce C++ ve více souborech, zobrazí se nevyřešená externí chyba. Kompilátor optimalizuje globální konstanty a nezanechá žádné místo vyhrazené pro proměnnou.
Jedním ze způsobů, jak tuto chybu vyřešit, je zahrnout inicializace const do souboru hlaviček a v případě potřeby zahrnout tuto hlavičku do souborů CPP, stejně jako kdyby to byl prototyp funkce. Další možností je nastavit proměnnou jako nestájnou a při posuzování použít konstantní odkaz.
Následující ukázka generuje C2019:
// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;
int main() {
test();
}
A pak,
// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;
void test() {
int i = lnktest1; // LNK2019
}