¿Diferencia entre #define y const en C?

#define es una directiva de preprocesador . Los datos definidos por la definición de macro #define se procesan previamente, de modo que su código completo pueda usarlos. Esto puede liberar espacio y aumentar los tiempos de compilación.

Las variables constantes se consideran variables y no definiciones de macros. 
 

Para resumir : el compilador maneja los CONST , mientras que el preprocesador maneja los #DEFINE .

La gran ventaja de const sobre #define es la verificación de tipos. #defines no se puede verificar, por lo que esto puede causar problemas al intentar determinar el tipo de datos . Si la variable es, en cambio, una constante, podemos tomar el tipo de datos que se almacenan en esa variable constante. 

Dado que las constantes se consideran variables , podemos usar punteros sobre ellas. Esto significa que podemos encasillar, mover direcciones y todo lo que podría hacer con una variable regular además de cambiar los datos en sí, ya que los datos asignados a esa variable son constantes.

En general, const es una mejor opción si tenemos una opción y se puede aplicar con éxito al código. Hay situaciones en las que #define no se puede reemplazar por const. Por ejemplo, #define puede tomar parámetros (Ver esto por ejemplo). #define también se puede usar para reemplazar algún texto en un programa con otro texto. 

Veamos las diferencias en forma tabular -:

  #definir constante
1. #define es una directiva de preprocesador. Las constantes se utilizan para hacer que las variables sean constantes de modo que nunca cambien durante la ejecución una vez definidas.
2. se utiliza para definir micro sustitución Las constantes también se llaman literales.
3.

Su sintaxis es -:

#define el valor del token  

Su sintaxis es -:

const tipo nombre_constante;

4. No debe estar encerrado con un (;) punto y coma Debe estar encerrado con un (;) punto y coma

Este artículo es una contribución de Abhay Rathi y editado por Nolan Taft . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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