c++ - 翻译单元数与 cpp 文件数
问题描述
我们有 2 个案例(场景)。在每种情况下,我们都有 2 个文件:main.cpp
和file.cpp
情况1
- 主.cpp:
#include <iostream>
#include "file.cpp" // this line is what matters
int main () {...}
我通过以下方式编译和运行:
g++ main.cpp -o main && ./main
案例2
- 主.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
文件会导致一个翻译单元,这会使您的程序员同事感到困惑并导致代码审查被拒绝。
在第二种情况下,您有两个翻译单元。
这一次,最终结果——可执行文件——是一样的。
推荐阅读
- c++ - CMake找不到头文件
- tensorflow - 如何在 Tensorflow Lite 上为 CoreML 委托设置填充类型以修复未设置“PoolingLayerBuilder (MEAN)_1”。
- api - 如何从 api 文件夹中获取 NextJS 中的 API
- android - 华为邮箱在逗号后剪切链接
- sql - 从 JSON 中提取深度嵌套的值
- regex - Ansible 正则表达式搜索未知转义字符
- pandas - 获取 tensorflow 段中最大值的 id
- c++ - 一个类能否在内部监控其成员函数的使用和参数
- swift - 仅当设备运行 iOS 10+ 时有条件地导入库/Pod (Firebase)
- python - 为什么我非常简单的添加不起作用