Ver macros C ampliadas

CorePress2024-01-25  9

¿Existe alguna manera de ver cómo se verá el código expandido después del preprocesamiento? Encontré muchas respuestas a mi pregunta en línea, pero todas usaban muchos términos que me eran completamente ajenos. Ver macros C expandidas Determinar la expansión de una macro en C. Soy un completo principiante en programación. Aprendiendo C de 'Let us C' de Y.K. Actualmente en el capítulo 12. 'Preprocesador C'. ¿Alguien puede explicar esto en términos sencillos o debería dejarlo por ahora y volver a ello más tarde?

usando Code:Blocks como IDE y gcc como compilador.

Editar:-

#include<stdio.h>
#define AREA(x) (3.14*x*x)
int main()
{
    int r1=1,r2=2;
    float ar1,ar2;
    ar1=AREA (r1);
    printf(" %f",ar1);
    ar2=AREA (r2);
    printf(" %f",ar2);
    printf(" %f",ar1/ar2);
    printf(" %f",AREA (r1)/AREA (r2));
}

Proporcione algún ejemplo mínimo reproducible en su pregunta$

- Basile Starynkevitch

28/03/2021 a las 16:38



------------------------------------

Compile su código desde la terminal, con el indicador -E: gcc my_code.c -E.

Esto imprimirá el código preprocesado directamente en la terminal. Si desea guardarlo en un archivo, agregue algo como -o result.txt al final.

4

¿Por terminal te refieres a cmd?

- EMS

28/03/2021 a las 17:34

@EMS Sí, exactamente.

- Santo Gato Negro

28/03/2021 a las 17:41

('gcc' no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes). Aparece este error.

- EMS

28/03/2021 a las 17:45

@EMS Encuentre dónde está gcc.exe en su sistema. Luego agregue ese directorio a PATH como se describe aquí. Entonces debería funcionar. Asegúrate de cerrar y reiniciar CMD después de modificar PATH.

- Santo Gato Negro

28/03/2021 a las 18:50



------------------------------------

Lea la documentación del compilador GCC.

Lea también algunos sitios web de referencia de C.

Hay un capítulo sobre cómo invocar GCC. Dedica una hora a leerlo.

También quieres leer la documentación del CPreprocesador PP, y probablemente de binutils GNU.

Puedes compilar tu archivo C ems.c usando gcc -Wall -Wextra -g -H ems.c -o ems-prog. Una vez que no tenga advertencias, use el depurador GDB para comprender el comportamiento de su ejecutable ems-prog

Puedes ejecutar gcc -Wall -Wextra -g -C -E ems.c -o ems.i para obtener, dentro del archivo ems.i, la forma preprocesada de ems.c

Puedes ejecutar comandos de compilación en algún emulador de terminal.

Más adelante, querrás usar GNU make (o ninja) o alguna otra herramienta de automatización de compilación para controlar los comandos de compilación. Por supuesto, debes leer su documentación.

Estudie para inspirarse el código fuente de software libre existente codificado en C, por ejemplo GNU bash.

Compartir Seguir editado

28/03/2021 a las 16:30

Respondido

28 de marzo de 2021 a las 16:23

Basile Starynkevitch

Basile Starynkevitch

1

12

2

Es posible que desees decir explícitamente que el único indicador realmente necesario es -E, por lo que el comando mínimo es algo así como gcc -E ems.c -o ems.i.

- Santo Gato Negro

28/03/2021 a las 16:27

En general, sí, pero algunos indicadores de optimización pueden agregar indicadores de preprocesador. Y mantener los comentarios intactos es prácticamente útil

- Basile Starynkevitch

28/03/2021 a las 16:28

2

Entonces se podría decir que OP debería usar los mismos indicadores que usa normalmente, más -E.

- Santo Gato Negro

28/03/2021 a las 16:29

3

Hace tiempo que quería preguntar: ¿cuál es la idea detrás de incluir enlaces a temas relacionados tangencialmente en sus respuestas? ¿Crees que SO sería un mejor lugar si cada respuesta fuera así? Siempre pensé que SO se hizo tan popular porque no tiene sentido.consulte Preguntas y respuestas. Si estuviera buscando "cómo expandir macros", me gustaría ver algo como "compila tu código con el indicador -E, como esto: <ejemplo>, ver más en el <manual>". ;, no buscar en media docena de enlaces para construir sistemas, shells, depuradores y demás. :/

- Santo Gato Negro

28/03/2021 a las 16:35

La idea principal es leer la documentación antes de preguntar. No entiendo por qué la gente prefiere hacer preguntas sobre SO antes de leer la documentación, uny sin proporcionar ningún ejemplo mínimo reproducible

- Basile Starynkevitch

28/03/2021 a las 16:38

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare