Constantes globales en C++
Les constantes globales C++ ont une liaison statique. C’est différent de C. Si vous essayez d’utiliser une constante globale en C++ dans plusieurs fichiers, vous obtenez une erreur externe non résolue. Le compilateur optimise les constantes globales en laissant aucun espace réservé à la variable.
Une façon de résoudre cette erreur consiste à inclure les initialisations const dans un fichier d’en-tête et à inclure cet en-tête dans vos fichiers CPP si nécessaire, comme s’il s’agissait d’un prototype de fonction. Une autre possibilité consiste à rendre la variable non constante et à utiliser une référence constante lors de son évaluation.
L’exemple suivant génère l’erreur C2019 :
// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;
int main() {
test();
}
Enfin,
// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;
void test() {
int i = lnktest1; // LNK2019
}