Sdílet prostřednictvím


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
}

Viz také

Chyba linkerů LNK2019