术语“源文件”和“翻译单元”之间有什么区别?

时间:2010-05-08 20:05:42

标签: c++ terminology c++-faq

源文件和翻译单元之间有什么区别?

3 个答案:

答案 0 :(得分:33)

来自C ++标准:

  

源文件以及通过预处理指令包含的所有头文件和源文件#include较少任何条件包含预处理指令跳过的任何源代码行称为翻译单元。

答案 1 :(得分:30)

“翻译单元”是源文件加上#includes的任何标题或其他源文件,以及它们包含的任何文件,依此类推。源文件就是......一个源文件。

如果它有帮助,可以将源文件视为预处理器运行的“之前”,将翻译单元视为“之后”。或者,将其视为预处理器将源文件转换为翻译单元的工作。

答案 2 :(得分:16)

翻译单元是C ++中编译的基本单元。它包含:

  • 预处理器运行后的单个源文件的所有内容
  • 直接或间接包含的任何头文件的内容
  • 减去使用条件预处理语句忽略的所有行

单个翻译单元被编译为目标文件,库或可执行程序。

相比之下,源文件是一个独立文件,就像文件系统上的任何其他文件一样。编译后,它可以是上面提到的翻译单元的一个组件。