#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