如果我们有两个 .c 文件和一个 .h 文件:main.c sub.c sub.h
,其中
主程序
#include "sub.h"
...
子c
#include "sub.h"
...
我们可以用 i) 编译程序
gcc -o a.out main.c sub.c
或 ii)
gcc -c main.c
gcc -c sub.c
gcc -o a.out main.o sub.o
在这种情况下,预处理器是否输出一个或两个翻译单元?
我很困惑,因为:main.c
包括sub.h
,意味着预处理器会输出一个编译单元。另一方面,创建了两个目标文件,main.o
并且sub.o
在创建可执行文件之前,让我认为“两个源文件因此两个翻译单元”。
我误解了哪一部分?或者我在哪里犯错误?