Dans le code suivant, j'ai déclaré une variable de membre de structure sous le même nom de structure.Pourquoi le compilateur ne donne pas une erreur conflictuelle?
struct st
{
int st;
};
int main()
{
struct st t;
t.st = 7;
return 0;
}
Je me demande, il fonctionne très bien sur compilateur GCC et ne donne pas une erreur de conflit.
Ainsi,
- Comment le compilateur connaît le nom de la structure et le nom variable?
- Quel mécanisme utilise le compilateur?
Que renvoient 'main()'? – joop
Les variables et les noms de structure sont des entités différentes pour tout compilateur C à partir de KnR. Trier les différents espaces de noms, si vous le souhaitez. Donc c'est parfaitement normal. – Matt
'struct' demande au compilateur de marquer le' st' suivant comme struct avec la valeur 'st'. De même, le membre «int st» est déclaré comme une variable «int» avec le nom «st». Leurs usages sont orthogonaux, de sorte que le compilateur ne peut pas être confondu pendant l'analyse lexicale. –