locate stdio.h
atau
mlocate stdio.h
tapi locate
bergantung pada database, jika Anda belum pernah memperbaruinya
sudo updatedb
Anda juga dapat menanyakan gcc
untuk mengetahui direktori default apa saja yang dipindai oleh gcc
itu sendiri:
gcc -print-search-dirs
gcc -H ...
akan mencetak path lengkap dari setiap file penyertaan sebagai efek samping dari kompilasi reguler. Gunakan -fsyntax-only
selain itu untuk tidak membuat keluaran apa pun (masih akan memberi tahu Anda jika program Anda memiliki kesalahan). Contoh (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
Titik-titik di awal setiap baris menghitung seberapa dalam #include
bersarang adalah.
Jika Anda menggunakan gcc, Anda dapat memeriksa file tertentu dengan sesuatu seperti:
echo '#include <stdbool.h>' | cpp -H -o /dev/null 2>&1 | head -n1
-H
meminta preprosesor untuk mencetak semua file yang disertakan secara rekursif. head -n1
hanya mengambil baris pertama keluaran dari itu, untuk mengabaikan file apa pun yang disertakan oleh header bernama (walaupun stdbool.h khususnya mungkin tidak).
Di komputer saya, misalnya, keluaran di atas:
. /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdbool.h
Selama preprocessing, semua directive preprocessor akan diganti dengan yang sebenarnya. Seperti ekspansi makro, penghapusan komentar kode, termasuk kode sumber file header dll...
kita bisa mengeceknya dengan menggunakan cpp
- Perintah C PreProcessor.
Misalnya di baris perintah:
cpp Filename.c
menampilkan keluaran yang diproses sebelumnya.