locate stdio.h
o
mlocate stdio.h
pero locate
se basa en una base de datos, si nunca la ha actualizado
sudo updatedb
también puede consultar gcc
para saber cuáles son los directorios predeterminados que son escaneados por gcc
mismo:
gcc -print-search-dirs
gcc -H ...
imprimirá la ruta completa de cada archivo de inclusión como un efecto secundario de la compilación regular. Usa -fsyntax-only
además de conseguir que no cree ninguna salida (aún así te dirá si tu programa tiene errores). Ejemplo (Linux, gcc-4.7):
$ cat > test.c
#include <stdbool.h>
#include <stdio.h>
^D
$ gcc -H -fsyntax-only test.c
. /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdbool.h
. /usr/include/stdio.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/bits/predefs.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/gnu/stubs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
.... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h
.. /usr/include/x86_64-linux-gnu/bits/types.h
... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/bits/typesizes.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h
.... /usr/include/wchar.h
... /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdarg.h
.. /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
.. /usr/include/x86_64-linux-gnu/bits/sys_errlist.h
Los puntos al comienzo de cada línea cuentan qué tan profundamente anidado el #include
es.
Si usa gcc, puede verificar un archivo específico con algo como:
echo '#include <stdbool.h>' | cpp -H -o /dev/null 2>&1 | head -n1
-H
pide al preprocesador que imprima todos los archivos incluidos recursivamente. head -n1
toma solo la primera línea de salida de eso, para ignorar cualquier archivo incluido por el encabezado nombrado (aunque stdbool.h en particular probablemente no lo haga).
En mi computadora, por ejemplo, los resultados anteriores:
. /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdbool.h
Durante el preprocesamiento, todas las directivas del preprocesador se reemplazarán con las actuales. Como la expansión de macros, la eliminación de comentarios de código, incluido el código fuente del archivo de encabezado, etc.
podemos verificarlo usando el cpp
- Comando C Preprocesador.
Por ejemplo en la línea de comando:
cpp Filename.c
muestra la salida preprocesada.