Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: turinga18 en 15 Agosto 2017, 17:53 pm



Título: const vs define
Publicado por: turinga18 en 15 Agosto 2017, 17:53 pm
Hola, soy principante en programación y realizando un ejercicio en C, me ha surgido una duda. ¿Qué diferencia existe entre define y const? ¿Cuándo he de utilizar una u otra?¿Por qué?

Muchas gracias de antemano.


Título: Re: const vs define
Publicado por: engel lex en 15 Agosto 2017, 19:16 pm
const declara un espacio estático de memoria dentro del programa, define es una directiva (macro) de preprocesador que lo que hace es sobreescribir el codigo antes de compilar...
 
ejemplo de define...

este programa

Código
  1. #define mult( f1, f2 ) ( f1 * f2 )
  2. #define valor 50
  3.  
  4. int main(){
  5.  
  6.  int a = 1;
  7.  int b = valor;
  8.  
  9.  int c = mult(a,b);
  10.  
  11.  return 0;
  12. }

si estás en linux, puedes usar el comando gcc -E archivo.c para que en lugar de compilar, te muestre el archivo despues de ser pasado por el preprocesador, verás que se covierte en

Código
  1. int main(){
  2.  
  3.  int a = 1;
  4.  int b = 50;
  5.  
  6.  int c = ( a * b );
  7.  
  8.  return 0;
  9. }

y esto ultimo será lo que se compile


Título: Re: const vs define
Publicado por: MAFUS en 16 Agosto 2017, 16:28 pm
De igual forma, como const son "variables" no se pueden usar para crear arrays por el hecho de que en C no se pueden dimensionar arrays con variables (después hay compiladores con extensiones que si dejan), pero por otra parte los debuggers y otros programas de desarrollo sí pueden controlar estos datos.
Los defines, al ser parte del fuente no se pueden controlar por los debuggers pero sí pueden ser usados para dimensionar arrays, pues el compilador ve un número.