Constantes globais no C++
As constantes globais no C++ têm vinculação estática. Isso é diferente do C. Se você tentar usar uma constante global no C++ em vários arquivos, receberá um erro externo não resolvido. O compilador otimiza as constantes globais fora, não deixando espaço reservado para a variável.
Uma maneira de resolver esse erro é incluir as inicializações const em um arquivo de cabeçalho e incluir esse cabeçalho em seus arquivos CPP quando necessário, como se fosse um protótipo de função. Outra possibilidade é tornar a variável não constante e usar uma referência constante ao avaliá-la.
O seguinte exemplo gera o erro C2019:
// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;
int main() {
test();
}
Assim,
// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;
void test() {
int i = lnktest1; // LNK2019
}