Ce code produira une erreur en c++
// Foo.cpp
const int Foo = 99;
// Main.cpp
extern const int Foo;
int main()
{
cout << Foo << endl;
return 0;
}
La raison invoquée par beaucoup est que le const global a une portée interne et qu'il est statique par défaut.
la solution à ce problème est :-
//Foo.h
extern const int Foo;
// Foo.cpp
#include "Foo.h"
const int Foo = 99;
// Main.cpp
#include "Foo.h"
int main()
{
cout << Foo << endl;
}
J'avais l'habitude de penser que extern est utilisé pour dire au compilateur que la mémoire pour l'indentifiant est déjà allouée quelque part dans d'autres fichiers.
En appliquant la même logique sur le code ci-dessus, quelqu'un peut-il expliquer ce qui se passe ici ou extern a une signification différente en c++ ?
Entrez la description du lien ici
Considérez aussi cette page, elle gâche toutes mes intuitions