Utilisation de “statique” dans une structure en C

Est-il légal d’avoir un membre “statique” dans une structure C?

Par exemple

struct my_struct { int x; static int y; }; 

S’il est en effet légal, quelles sont les implications de l’utilisation du mot clé “statique”?

Non, cela n’aurait aucun sens en C. C’est cependant valable en C ++.

Non, pas en C

(Vous pouvez avoir un membre statique dans une structure C++ .)

Vous êtes probablement désorienté par le fait que Static n’est pas utilisé aux mêmes fins que dans des langages tels que Java ou C # (ou C ++, d’ailleurs). Cet article explique l’utilisation de C de la statique de manière approfondie:

Que veut dire “statique”?

Il semble que vous posiez des questions sur l’intuition d’un membre statique. Un membre statique signifie un par type au lieu d’un par instance. Dans votre cas, si vous aviez

 struct my_struct a, b; 

alors a et b auraient chacun leur propre x mais partageraient un y commun. Ceci est également vrai des fonctions membres statiques.

Mais comme cela a été dit, cela ne s’applique pas à C, mais à C ++ et à Java.

vous ne pouvez pas utiliser le spécificateur static dans une structure

structure variables de structure ne peuvent pas être initialisées dans une structure et static spécificateur static initialise la variable à 0 ..

ce comportement n’est pas autorisé en C ..

Lors de la compilation Erreur de compilation du compilateur; Parce que chaque fois que le compilateur rencontre un mot clé statique, il devrait générer du code pour initialiser (aucune valeur explicitement spécifiée) la variable statique dans le segment de données ou le segment BSS. Dans notre scénario, la mémoire ne sera pas allouée à une déclaration de structure et le compilateur renvoie donc une erreur.