翻译单元数与 cpp 文件数
Number of translation units vs number of cpp files
我们有2个案例(场景)。在每种情况下,我们都有 2 个文件:main.cpp
和 file.cpp
案例一
- main.cpp :
#include <iostream>
#include "file.cpp" // this line is what matters
int main () {...}
我编译并运行通过做:
g++ main.cpp -o main && ./main
案例二
- main.cpp :
#include <iostream>
void filefunc(int); // function declaration from file.cpp
int main () {...}
我编译并运行通过做:
g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main
每种情况下我们有多少 translation units
?是吗:
- 第一个
- 第二个两个
每传递一个源代码文件给g++
,就是一个翻译单元。根据定义。
文件扩展名实际上无关紧要,但通常我们为传递给编译器的东西保留“.cpp”,而不是我们 #include
.
在第一种情况下,您不明智地包含 .cpp
文件会导致 单个 翻译单元,这会使您的程序员同事感到困惑并导致代码被拒绝评论。
在第二种情况下,您有两个翻译单元。
这一次,最终结果——可执行文件——是一样的。
我们有2个案例(场景)。在每种情况下,我们都有 2 个文件:main.cpp
和 file.cpp
案例一
- main.cpp :
#include <iostream>
#include "file.cpp" // this line is what matters
int main () {...}
我编译并运行通过做:
g++ main.cpp -o main && ./main
案例二
- main.cpp :
#include <iostream>
void filefunc(int); // function declaration from file.cpp
int main () {...}
我编译并运行通过做:
g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main
每种情况下我们有多少 translation units
?是吗:
- 第一个
- 第二个两个
每传递一个源代码文件给g++
,就是一个翻译单元。根据定义。
文件扩展名实际上无关紧要,但通常我们为传递给编译器的东西保留“.cpp”,而不是我们 #include
.
在第一种情况下,您不明智地包含 .cpp
文件会导致 单个 翻译单元,这会使您的程序员同事感到困惑并导致代码被拒绝评论。
在第二种情况下,您有两个翻译单元。
这一次,最终结果——可执行文件——是一样的。