Carlos Lefin Henriquez
PreguntaCual es la principal diferencia entre una Constante y un Define?
Miguel Angel Velazquez Romero
La directiva #define es una directiva de preprocesador; el preprocesador reemplaza esas macros por su cuerpo antes de que el compilador lo vea. Piense en ello como una búsqueda y reemplazo automático de su código fuente.
Una declaración de variable const declara una variable real en el lenguaje, que puedes usar ... bueno, como una variable real: toma su dirección, pásala, usa cast, conviértela, etc.
Sobre el endimiento: tal vez esté pensando que evitar la declaración de una variable ahorra tiempo y espacio, pero con cualquier nivel de optimización del compilador sensible no habrá diferencia, ya que los valores constantes ya se sustituyen y se pliegan en el momento de la compilación. Pero obtienes la gran ventaja de verificar el tipo y hacer que el depurador conozca tu código, por lo que realmente no hay razón para no usar variables const.
Irving Juárez
La directiva preprocesador define puede incluso hacer operaciones, tales como sumas o restas, en cambio las consts no pueden hacer eso, como en el siguiente ejemplo:
#include <stdio.h> #define MAX (a > b) ? a : b int main(){ int a = 1, b = 2; printf("El numero mayor es: %d \n", SUM a); return 0; }
Esto es un ejemplo mas complejo pero es una buena manera de diferenciarlo
