翻译单元在C和c++

Translation unit in C and C++

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

在c++和C中翻译单元有什么区别吗?

在其他帖子中,我读到头文件和源文件构成翻译单元,但是一个源文件可以单独被称为翻译单元在c++中,它包含所有的定义在一个文件?

翻译单元不是"头文件和源文件"。它可以包括一千个头文件(也包括一千个源文件)。

翻译单元就是通常所说的预处理后的"源文件"或"。cpp文件"。如果源文件#include有其他文件,则这些文件的文本由预处理器包含在翻译单元中。在这个问题上C和c++没有区别

头文件在预处理时被添加到。cpp文件中,所以编译器基本上是在处理一大段代码,包括。cpp和所有的。h文件。

这是翻译单元

这取决于你所说的"差异"是什么意思。C和c++都有类似地定义它:基本上,当您编译一个源文件(因此,所有包含的头文件都展开了)宏,等等)。但这在两种语言中是不一样的;像模板这样的东西意味着翻译单元的行为确实不同(例如,c++只有一个定义规则)

翻译单元实际上是在源文件和头文件经过预处理(使用头文件扩展源文件)和预编译后得到的。编译器使用翻译单元生成您在编译器输出目录中看到的.obj文件。

编译器看到并作为一个单元翻译的源文件集合