include の動きを確認してみる
gcc の -e というオプションを使うと、プリプロセッサがどのようにソースコードを変更したのかを確認することができる。例えば、以下のような sub.c というソースを
int func1(){ return 0; }
main.c が include しているとする。
#include "sub.c" int main(void){ func1(); return 0; }
この main.c がコンパイル前にどのようになるかと言うと、
$ gcc -E main.c # 1 "main.c" # 1 "<command-line>" # 1 "main.c" # 1 "sub.c" 1 int func1(){ return 0; } # 2 "main.c" 2 int main(void){ func1(); return 0; } $
となる。ここで、sub.c が #include