2 votes

const et global

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X