如果我们有两个 .c 文件和一个 .h 文件:
我们可以使用以下方式之一编译程序:i)
鉴于这种情况,预处理器的输出是否为一个或两个翻译单元?
我感到困惑的原因是:main.c包括sub.h,这意味着预处理器将输出一个编译单元。另一方面,在创建可执行文件之前,有两个对象文件被创建,即main.o和sub.o,这让我认为"两个源文件因此有两个翻译单元"。
我哪里理解有误?或者说我犯了什么错误?
main.c sub.c sub.h
,其中:
main.c
#include "sub.h"
...
sub.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,这让我认为"两个源文件因此有两个翻译单元"。
我哪里理解有误?或者说我犯了什么错误?