Saltar al contenido

¿Cuál es la diferencia entre macro constantes y variables constantes en C?

Solución:

Las macros son manejadas por el preprocesador: el preprocesador reemplaza el texto en su archivo fuente, reemplazando todas las apariciones de ‘A’ con el literal 8.

El compilador maneja las constantes. Tienen el beneficio adicional de la seguridad de tipos.

Para el código compilado real, con cualquier compilador moderno, debe haber una diferencia de rendimiento cero entre los dos.

Las constantes macro-definidas son reemplazadas por el preprocesador. Las ‘variables’ constantes se gestionan como variables regulares.

Por ejemplo, el siguiente código:

#define A 8
int b = A + 10;

Le parecería al compilador real como

int b = 8 + 10;

Sin embargo, este código:

const int A = 8;
int b = A + 10;

Aparecería como:

const int A = 8;
int b = A + 10;

🙂

En la práctica, lo principal que cambia es el alcance: las variables constantes obedecen las mismas reglas de alcance que las variables estándar en C, lo que significa que se pueden restringir, o posiblemente redefinir, dentro de un bloque específico, sin que se filtre; es similar al local. vs situación de variables globales.

En C, puedes escribir

#define A 8
int arr[A];

pero no:

const int A = 8;
int arr[A];

si recuerdo las reglas correctamente. Tenga en cuenta que en C ++, ambos funcionarán.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *