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