翻译单元的数量与CPP文件的数量

Number of translation units vs number of cpp files

本文关键字:文件 CPP 单元 翻译      更新时间:2023-10-16

我们有2个情况(方案(。在每种情况下,我们都有2个文件:main.cppfile.cpp

情况1

  • main.cpp:
#include <iostream>
#include "file.cpp"  // this line is what matters
int main () {...}

我编译并通过:

运行
g++ main.cpp -o main && ./main

情况2

  • 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文件会导致A 单>单元翻译单元,这会使您的其他程序员感到困惑并在代码审查中导致拒绝。

在第二种情况下,您有两个翻译单元。

这次,最终结果&mdash;可执行

是一样的。