翻译单位数与cpp文件数

时间:2019-05-02 00:14:14

标签: c++ translation-unit

我们有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?是

  • 第一个
  • 第二个是第二个

1 个答案:

答案 0 :(得分:2)

每次将源代码文件传递给index.blade.php时,即翻译单位。根据定义。

文件扩展名实际上是无关紧要的,但是按照惯例,我们为传递给编译器的内容(而不是g++的内容)保留“ .cpp”。

在第一种情况下,您不明智地包含#include文件会导致产生一个单个翻译单元,这会使您的其他程序员感到困惑,并导致代码审查时被拒绝。

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

这一次,最终结果(可执行文件)还是一样。