Quelle est la différence entre ces 2 façons de déclarer une structure?
Première manière:
struct x {};
Deuxième manière:
struct _x {} x;
Le premier définit uniquement le type struct x
. La seconde définit le type struct _x
et définit une variable de ce type nommée x
.
Bien que ce ne soit probablement pas ce que vous aviez à l’esprit, les noms commençant par un caractère de soulignement, tel que _x
sont réservés à la scope du fichier. Par conséquent, à moins que cela ne se trouve dans une autre scope, le second a un comportement indéfini.
La seconde façon déclare une variable nommée type struct _x
et une variable de ce type nommée x
. Le premier ne déclare que le type struct x
.
La deuxième façon est essentiellement la même que
struct _x{}; // define a type struct _x x; // allocate a variable of type struct _x