¿Dónde se almacenan las variables volátiles constantes en c?

¿En qué sección se almacena la variable volátil constante en c.? En los microcontroladores deberíamos poner este tipo de variables en la RAM. ¿Derecha?

preguntado el 03 de mayo de 12 a las 12:05

En el microcontrolador, puede ver que los pines del puerto generalmente se definen como la variable volátil. Debido a que el compilador no optimizará el código y no reemplazará el valor con el valor en caché. Por lo tanto, podemos asegurarnos de que cada vez que lea el último valor actualizado solo desde los pines del puerto. -

"Una variable volátil constante" no tiene sentido: ¡o es una constante o es una variable! ¿Qué pretende con el uso de tal construcción? -

5 Respuestas

Volatile no tiene nada que ver con el lugar donde se almacena la variable. Simplemente le dice al compilador que lea la variable de la memoria cada vez para evitar cualquier optimización que el compilador pueda realizar para esa variable.

contestado el 03 de mayo de 12 a las 12:05

  1. Variables locales y marco de función - pila

  2. Variables globales y estáticas si no están inicializadas: el bloque .bss comienza con un símbolo

  3. Variables globales y estáticas si se inicializaron: segmento de datos

  4. Variables de entorno y argumentos: en la parte superior de la pila

  5. Asignación dinámica de datos: montón

  6. Constante - ROM

  7. Volátil - sin almacenamiento

  8. Registro - registro de la CPU

  9. Const volátil: en el mismo lugar que el almacenamiento constante

Respondido el 30 de diciembre de 12 a las 09:12

A const volatile variable significa que su programa C no puede cambiarlo legalmente, pero algo más puede hacerlo. Sería lógico colocar esta variable en la RAM, pero el compilador no se quejará si le indica (a través de un script de vinculación o una opción similar) que la coloque en la ROM. También puede ser útil ubicar esta variable donde se encuentra algún dispositivo asignado a la memoria, por ejemplo, un registro de contador de tiempo de solo lectura o un registro de salida ADC.

contestado el 03 de mayo de 12 a las 12:05

Entonces, si estamos asignando variables constantes a la ROM, el compilador asignará automáticamente dichas variables a la ROM. ¿derecho? - suraj

Depende de su compilador y de cómo lo use. - alexey frunze

const las variables para aplicaciones de microcontroladores probablemente se almacenen en flash ROM. La única vez que se almacenan en la RAM es cuando se evalúan en tiempo de ejecución, como parámetros constantes para funciones. O cuando está haciendo una compilación de depuración ejecutándose desde la RAM.

volatile no tiene nada que ver con dónde se almacenan las variables, como se explica en otras respuestas.

contestado el 03 de mayo de 12 a las 12:05

Bueno, como una constante necesita una dirección de RAM, podría almacenarse en la ROM, pero lo más probable es que se almacene (por expansión) en el código ensamblador (de solo lectura), al igual que para a += 2. Eso es lo más rápido que podría ser para un volatile.

Respondido el 16 de diciembre de 21 a las 13:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.