Digamos que tengo un archivo fuente con muchas directivas de preprocesador. ¿Es posible ver cómo se ve después de que el preprocesador haya terminado con él?
206
Digamos que tengo un archivo fuente con muchas directivas de preprocesador. ¿Es posible ver cómo se ve después de que el preprocesador haya terminado con él?
Respuestas:
cl.exe
, la interfaz de línea de comandos para Microsoft Visual C ++, tiene tres opciones diferentes para generar el archivo preprocesado (de ahí la inconsistencia en las respuestas anteriores sobre Visual C ++):/E
: preproceso a stdout (similar a la opción -E de GCC)/P
: preproceso para archivar/EP
: preproceso a stdout sin directivas #lineSi desea preprocesar un archivo sin directivas #line, combine las opciones
/P
y/EP
.fuente
/P
suprimirá la generación de archivos obj. Entonces, si pone/P
opciones, puede obtener un error de enlace que dice que no se pueden encontrar algunos archivos obj porque en realidad no se genera en absoluto.VS Developer command prompt
y NO dentroCommand prompt
cuando intente utilizar el compilador de MS (cl
). El compilador no está disponible en el comando convencional.La mayoría de los compiladores tienen la opción de ejecutar el preprocesador. por ejemplo , gcc proporciona -E:
Entonces puedes simplemente ejecutar:
Si no puede encontrar esa opción, también puede encontrar el preprocesador C en su máquina. Por lo general, se llama cpp y probablemente ya esté en tu camino. Invocarlo así:
Si hay encabezados que necesita incluir desde otros directorios, puede pasar -I / ruta / a / incluir / dir a cualquiera de estos, tal como lo haría con una compilación regular.
Para Windows, lo dejaré a otros carteles para que proporcionen respuestas, ya que no soy un experto allí.
fuente
Haga clic derecho en el archivo en el Explorador de soluciones, vaya a Propiedades. En Propiedades de configuración-> C / C ++ -> Preprocesador, "Generar archivo preprocesado" es lo que está buscando. Luego haga clic derecho en el archivo en el Explorador de soluciones y seleccione "Compilar". El archivo preprocesado se crea en el directorio de salida (por ejemplo, Release, Debug) con una extensión .i (gracias a Steed por su comentario).
fuente
Release
,Debug
) con una extensión.i
.Por lo general, debe realizar un procesamiento posterior en la salida del preprocesador; de lo contrario, todas las macros simplemente se expanden a un revestimiento, lo que es difícil de leer y depurar. Para el código C, algo como lo siguiente sería suficiente:
Para el código C ++, en realidad es mucho más difícil. Para GCC / g ++, este script de Perl me pareció útil.
fuente
No sé nada sobre el compilador de Microsoft, pero en GCC puedes usar esto:
Si quieres ver comentarios usa esto:
Más opciones disponibles en esta página .
fuente
Pruebe
cl /EP
si está utilizando el compilador C ++ de Microsoft.fuente
En Visual Studio puede compilar un archivo (o proyecto) con / P.
fuente
Como respondieron bk1e y Andreas M., la opción / P para el compilador hará que preprocese un archivo. Sin embargo, en mi proyecto usando VS2005 y Platform Builder (para un procesador ARM incorporado), el proyecto no presentó una opción en el cuadro de diálogo (como lo describe Jim B) para habilitar esa opción.
Pude ejecutar CL manualmente y agregar / P, pero falló porque no conocía todas las opciones apropiadas de línea de comandos que Platform Builder estaba activando de manera invisible durante la compilación completa. Así que necesitaba saber todas esas opciones.
Mi solución fue buscar en el archivo build.log y encontrar la línea que se ejecutó
CL blah-blah-blah myfile.c
Copié esta línea en el portapapeles. La parte "bla, bla, bla" contenía las opciones de compilación y era enorme.
De vuelta en el IDE, hice clic derecho en myfile.c, elegí "Abrir ventana de compilación", y luego en esa ventana pegué la línea de comandos de compilación, y agregué un "/ P".
CL /P blah-blah-blah myfile.c
Hecho. Se produjo el archivo myfile.i, que contenía la salida del preprocesador.
fuente
CPIP es un nuevo preprocesador C / C ++ escrito en Python. Si desea una representación visual detallada de un archivo preprocesado, inténtelo.
fuente
En el sistema operativo Windows, una respuesta simple de una línea a esta pregunta es utilizar el siguiente comando en el indicador de DOS para ver el archivo preprocesado:
Esto generará un archivo llamado myprogram.i . Ábralo y busque sus preprocesadores expandidos.
fuente