déclaration de struct

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