Uso de “estática” dentro de una estructura en C

¿Es legal tener un miembro “estático” dentro de una estructura de C?

Por ejemplo

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

Si es legal, ¿cuáles son las implicaciones del uso de la palabra clave “estática”?

No, eso no tendría sentido en C. Aunque es válido en C ++.

No, no en C

(Puedes tener un miembro estático en una estructura C++ ).

Probablemente te estés confundiendo por el hecho de que Static no se usa para los mismos fines que en lenguajes como Java o C # (o C ++ para esa materia). Esta publicación explica el uso de la estática de C a fondo:

¿Qué significa “estático”?

Parece que estás preguntando sobre la intuición detrás de un miembro estático. Un miembro estático significa uno por tipo en lugar de uno por instancia. En tu caso, si tuvieras

 struct my_struct a, b; 

entonces a y b tendrían cada uno su propio x pero compartirían un y común. Esto también es cierto de las funciones miembro estáticas.

Pero como se dijo, esto no se aplica a C. Sin embargo, a C ++ y Java.

no se puede utilizar el especificador static en una structure

structure variables de structure no pueden inicializarse dentro de una structure y static especificador static inicializa la variable a 0.

Este comportamiento no está permitido en C ..

En comstackción Error de lanzamiento del comstackdor; Porque cada vez que el comstackdor encuentra una palabra clave estática, se espera que genere código para inicializar (cero o un valor explícitamente especificado) la variable estática en el segmento de datos o segmento BSS. En nuestro escenario, la memoria no se asignará a una statement de estructura, por lo que el comstackdor arroja un error.