C++ 翻译单位数量与cpp文件数量
我们有两个案例。在每种情况下,我们都有2个文件:main.cpp和file.cpp 案例1 main.cpp: 包括 include file.cpp//重要的是这一行 int main{…} 我通过以下方式编译和运行:C++ 翻译单位数量与cpp文件数量,c++,translation-unit,C++,Translation Unit,我们有两个案例。在每种情况下,我们都有2个文件:main.cpp和file.cpp 案例1 main.cpp: 包括 include file.cpp//重要的是这一行 int main{…} 我通过以下方式编译和运行: g++ main.cpp -o main && ./main g++ -c main.cpp g++ -c file.cpp g++ main.o file.o -o main && ./main 案例2 main.cpp: 包括 void
g++ main.cpp -o main && ./main
g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main
案例2
main.cpp:
包括
void filefuncint;//来自file.cpp的函数声明
int main{…}
我通过以下方式编译和运行:
g++ main.cpp -o main && ./main
g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main
每种情况下我们有多少个翻译单位?是:
第一个一个
第二个两个
每次将源代码文件传递给g++时,这是一个翻译单元。根据定义 文件扩展名实际上是不相关的,但按照惯例,我们为传递给编译器的内容保留.cpp,而不是包含的内容 在第一种情况下,您不明智地将.cpp文件包含在一个翻译单元中,这会使您的程序员同事感到困惑,并导致代码评审时被拒绝 在第二种情况下,您有两个翻译单元
这一次,最终结果——可执行文件——是相同的。请注意,在这个翻译单元上,传递给编译器位的是,通过多次向编译器传递特定文件(可能使用不同的预处理器符号),实际上可能会有比源文件更多的TUdefined@SoronelHaetir例如?@MohamedBenkedadra为什么投反对票??