翻译单元在C和c++
Translation unit in C and C++
在c++和C中翻译单元有什么区别吗?
在其他帖子中,我读到头文件和源文件构成翻译单元,但是一个源文件可以单独被称为翻译单元在c++中,它包含所有的定义在一个文件?
翻译单元不是"头文件和源文件"。它可以包括一千个头文件(也包括一千个源文件)。
翻译单元就是通常所说的预处理后的"源文件"或"。cpp文件"。如果源文件#include
有其他文件,则这些文件的文本由预处理器包含在翻译单元中。在这个问题上C和c++没有区别
头文件在预处理时被添加到。cpp文件中,所以编译器基本上是在处理一大段代码,包括。cpp和所有的。h文件。
这是翻译单元
这取决于你所说的"差异"是什么意思。C和c++都有类似地定义它:基本上,当您编译一个源文件(因此,所有包含的头文件都展开了)宏,等等)。但这在两种语言中是不一样的;像模板这样的东西意味着翻译单元的行为确实不同(例如,c++只有一个定义规则)
翻译单元实际上是在源文件和头文件经过预处理(使用头文件扩展源文件)和预编译后得到的。编译器使用翻译单元生成您在编译器输出目录中看到的.obj文件。
编译器看到并作为一个单元翻译的源文件集合
相关文章:
- 什么时候调用组成单元对象的析构函数
- 不同翻译单元中不可重载的非内联函数定义
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 将QIcon添加到QTableView单元格
- 用于交叉编译和CMake的预处理器宏的单元测试
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 字节真的是最小可寻址单元吗
- C++ 用于单元测试的模板模板
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 提升 1.64 单元测试编译失败
- boost::包含提升单元的元组的哈希值
- 单元测试欧拉到四元数实现失败
- 查找矩阵中单元格的相邻元素
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?