uniones lenguaje funciones estructuras ejemplos dev decisiones con arreglo anidadas c struct volatile

lenguaje - En C, ¿cómo declara que los miembros de una estructura son volátiles?



funciones con estructuras en c (3)

Debería ser bastante sencillo según this artículo:

Finalmente, si aplica volatile a una estructura o unión, todo el contenido de la estructura / union es volátil. Si no desea este comportamiento, puede aplicar el calificador volátil a los miembros individuales de la estructura / unión.

¿Cómo declaras a un miembro particular de una estructura como volátil?


Exactamente lo mismo que los campos no struct :

#include <stdio.h> int main (int c, char *v[]) { struct _a { int a1; volatile int a2; int a3; } a; a.a1 = 1; a.a2 = 2; a.a3 = 3; return 0; }

Puede marcar toda la struct como volátil usando "volatile struct _a {...}" pero el método anterior es para campos individuales.


Necesito aclarar volatile para C / C ++ porque hubo una respuesta incorrecta aquí. He estado programando microcontroladores desde 1994, donde esta palabra clave es muy útil y necesaria a menudo.

volatile nunca romperá tu código, nunca es arriesgado usarlo. La palabra clave básicamente se asegurará de que la variable no esté optimizada por el compilador. Lo peor que podría pasar si usas demasiado esta palabra clave es que tu programa será un poco más grande y más lento.

Aquí es cuando NECESITA esta palabra clave para una variable: - Tiene una variable que está escrita dentro de una función de interrupción. Y - Esta misma variable se lee o escribe en funciones de interrupción externas. O Si tiene 2 funciones de interrupción de diferente prioridad que usan la variable, entonces también debería usar ''volátil''.

De lo contrario, la palabra clave no es necesaria.

En cuanto a los registros de hardware, deben tratarse como volátiles incluso sin la palabra clave si no hace cosas extrañas en su programa.