Bloquer la portée et le lien interne?
Aug 30 2020
À partir de la norme C18 (6.7.9):
Si la déclaration d'un identificateur a une portée de bloc et que l'identificateur a un lien externe ou interne , la déclaration ne doit pas avoir d'initialiseur pour l'identificateur.
Je n'ai aucun problème avec la portée de bloc + la liaison externe. Mais, je ne vois pas comment un identifiant peut avoir une portée de bloc et un lien interne. Est-ce que c'est possible?
Réponses
6 JensGustedt Aug 30 2020 at 02:22
Si votre global est défini
static int hui;
il a un lien interne. ensuite
void f(void) {
extern int hui;
}
fait référence au même objet avec un lien interne, même si le mot-clé dit extern.
C'est donc externun abus de langage et devrait probablement l'être linkage.