Ayuda me queda una duda, cuando usamos #define no le estamos diciendo a C cuántos Bytes va a utilizar como lo hacemos con los int, short,...

Cesar Hernández Ramírez

Cesar Hernández Ramírez

Pregunta
student
hace 4 años

Ayuda me queda una duda, cuando usamos #define no le estamos diciendo a C cuántos Bytes va a utilizar como lo hacemos con los int, short, etc. ¿Cómo sabe C cuánto espacio darle a nuestras constantes #define?

4 respuestas
para escribir tu comentario
    Cesar Hernández Ramírez

    Cesar Hernández Ramírez

    student
    hace 4 años

    Genial, en resumen #define se adapta al tamaño del valor que le demos

    Daniel Luque Soria

    Daniel Luque Soria

    student
    hace 4 años

    Respuesta corta

    #define
    es una directiva del pre-procesador. Por ejemplo
    #define FLAG_MODE 4;
    , cada vez que el pre-procesador encuentre en el código el simbolo
    FLAG_MODE
    lo va a sustituir por el valor 4. No es necesario reserva memoria porque no se trata de una variable.

    Respuesta larga con demostración

    El

    FLAG_MODE
    no va a estar en tu ejecutable, ya que será sustituido por su valor, en este caso 4, durante la fase de pre-procesado.

    #define FLAG_MODE 4; int main() { int mode = FLAG_MODE; return 0; }

    Si tomamos como ejemplo el bloque de código anterior y lo compilamos sin pasar por el linker (

    gcc -c prueba.c
    ). Se generara un object file
    prueba.o
    .

    Ejecutando el comando

    objdump -D prueba.o
    podemos ver el código de nuestro programa ya compilado, se mostrará en lenguaje ensamblador:

    Si revisamos la parte de

    main
    más concretamente la linea marcada en rojo, lo creas o no, podemos ver el valor de la variable
    mode
    . El valor es $0x4 (esta en hexadecimal) 0x4 en decimal es 4, justamente el valor que le dimos a
    FLAG_MODE
    .

    Admito que la explicación ha sido bastante extensa, he omitido algunos conceptos y he simplificado otros. Aun así espero que te pueda servir. 💚

Curso de Introducción a C

Curso de Introducción a C

Aprende los fundamentos de C para desarrollar software. Descubre cómo funcionan los programas en C, declara variables, trabaja con tipos de datos y constantes. Ideal para quienes inician en este potente lenguaje de programación.

Curso de Introducción a C
Curso de Introducción a C

Curso de Introducción a C

Aprende los fundamentos de C para desarrollar software. Descubre cómo funcionan los programas en C, declara variables, trabaja con tipos de datos y constantes. Ideal para quienes inician en este potente lenguaje de programación.