Estoy tratando de “armar” compilar un archivo C, incluye muchos archivos de encabezado recursivamente… estoy tratando de encontrar la lista de estos archivos de encabezado… ¿hay una manera más fácil de encontrar la lista de todos los archivos de encabezado que incluye? ?
lista de todos los archivos de encabezado incluidos en un archivo C
carta blanca
piokuc
Puede usar el preprocesador GCC C con su opción para volcar una lista de encabezados incluidos recursivamente:
cpp -M
Eso le mostrará todos los encabezados incluidos.
Probablemente necesitará darle las raíces de todos los directorios de inclusión utilizados en su compilación normal. Ejecútelo iterativamente, agregando más rutas de inclusión hasta que los errores se detengan.
La forma completa de este comando en este uso es:
cpp -M [-I include_directory *] path_to_c_file.c
-
¿Esto se aplica para qué cadena de herramientas de nuevo?
– πάντα ῥεῖ
12 de abril de 2013 a las 16:14
-
¡Gracias! he estado familiarizado con
gcc -M
og++ -M
lacpp
El comando y esa opción en particular son nuevos para mí. ¿Rastrea también los archivos incluidos recursivamente? Olvídate de esto, lo tengo, es el preprocesador independiente…– πάντα ῥεῖ
12 de abril de 2013 a las 16:18
-
Si no desea ver los encabezados del sistema, reemplace el
-M
opción con-MM
.– ahcox
5 de marzo de 2014 a las 15:06
-
¿Cómo enumero la salida -MM?
– Charco
30 de enero de 2019 a las 9:10
según http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options Las opciones -H y -M son útiles para este propósito.
Otra opción es usar http://www.doxygen.nl/ y genere documentación de su proyecto, después de eso puede verificarlo para ver las dependencias de archivos :), se prefiere porque admite muchos lenguajes: C, C ++, Objective-C, C #, PHP, Java, Python, IDL (Corba y Microsoft sabores), FORTRAN, VHDL, Tcl.
La mayoría de los compiladores tienen un interruptor para que solo preprocesen el archivo. Lo que significa entre otros que expanden todos #include
‘s en un código real. Y por lo general incluyen un comentario (comentario C apropiado) en la línea de inclusión original. Entonces puede buscar el código preprocesado resultante para todos esos comentarios para recopilar todos los encabezados incluidos.
-
Por lo general, no es un comentario, sino un
#line
directiva.– James Kanze
12/04/2013 a las 16:20
-
Y también: el interruptor suele ser
-E
(o/E
).– James Kanze
12 de abril de 2013 a las 16:21
Sí, mira en el archivo .C. O, alternativamente, puede echar un vistazo al encabezado maestro usando la opción del compilador -E.
– Tiburón
12 de abril de 2013 a las 16:10
Aquí hay una pista para GCC: stackoverflow.com/questions/42308/…
– πάντα ῥεῖ
12 de abril de 2013 a las 16:13
para estudio visual msdn.microsoft.com/en-us/library/hdkef6tk%28v=vs.90%29.aspx
– usuario995502
12 de abril de 2013 a las 16:23