Les identifiants suivants n'ont pas de lien : un identifiant déclaré comme étant autre chose qu'un objet ou une fonction ; un identifiant déclaré comme étant un paramètre de fonction ; un identifiant d'étendue de bloc pour un objet déclaré sans le spécificateur de classe de stockage extern .
{
static int a; //no linkage
}
Pour un identificateur déclaré avec le spécificateur de classe de stockage extern dans une portée dans laquelle une déclaration antérieure de cet identificateur est visible, si la déclaration antérieure spécifie un lien interne ou externe, le lien de l'identificateur lors de la déclaration ultérieure est le même que celui spécifié lors de la déclaration antérieure. Si aucune déclaration antérieure n'est visible, ou si la déclaration préalable n'indique pas d'association , alors l'identifiant a un lien externe .
{
static int a; //no linkage
extern int a; //a should get external linkage, no?
}
Erreur GCC : déclaration externe d'une déclaration suivante sans lien avec celle-ci
Quelqu'un peut-il m'expliquer pourquoi j'obtiens cette erreur ?
Merci.