Partilhar via


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
}

Confira também

Erro das ferramentas de vinculador LNK2019