Costanti globali in C++

Aggiornamento: novembre 2007

Global Constants in C++

Le costanti globali di C++ dispongono di collegamento statico, a differenza di quelle di C. Se si tenta di utilizzare una costante globale in C++ in più file si verifica un errore di esterno non risolto. Nella compilazione, le costanti globali sono ottimizzate, senza lasciare spazio riservato per la variabile.

Un modo per correggere questo errore consiste nell'includere le inizializzazioni const in un file di intestazione e nell'inserire tale intestazione nei file cpp quando necessario, come se si trattasse di un prototipo di funzione. Un'altra possibilità consiste nel rendere la variabile non costante e utilizzare un riferimento costante nel valutarla.

Nell'esempio seguente viene generato l'errore C2019:

// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;

int main() {
   test();
}

quindi

// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;

void test() {
  int i = lnktest1;   // LNK2019
}

Vedere anche

Riferimenti

Errore degli strumenti del linker LNK2019