Plusieurs définition d'une variable globale n'est pas autorisé en C ou C++ en raison de la Définition de la Règle. Toutefois, en C++ const variable globale peut être définie de plusieurs unités de compilation sans erreur. Ce n'est pas le même qu'en C.
Pourquoi est-ce que C++ permettre à cette tandis que le C ne l'est pas? Pourquoi l'utilisation et le comportement d'un const mondiale diffèrent d'un non-const global de cette façon en C++ par rapport au C? Ce qui se passe sous les couvertures avec C++ et C par rapport à const?
Par exemple, c'est permis en C++, mais mal dans C:
// Foo.cpp
const int Foo = 99;
// Main.cpp
const int Foo = 99;
int main()
{
cout << Foo << endl;
return 0;
}
Et ce qui est bien avec le C, mais de mal avec C++:
// Foo.cpp
const int Foo = 99;
// Main.cpp
extern const int Foo;
int main()
{
cout << Foo << endl;
return 0;
}