当前位置:  开发笔记 > 编程语言 > 正文

什么是C++中的"翻译单元"

如何解决《什么是C++中的"翻译单元"》经验,为你挑选了4个好方法。

我正在阅读Meyers编写的"Effective C++",并且遇到了"翻译单元"一词.

有人可以给我一个解释:

1)究竟是什么

2)在使用C++编程时,我应该何时考虑使用它

3)如果它只与C++有关,或者它可以与其他编程语言一起使用

我可能已经在不知道术语的情况下使用它了....



1> JeffH..:

从这里 :(返回机器链接)

根据标准C++(wayback machine link):翻译单元是C++中编译的基本单元.它由单个源文件的内容,以及它直接或间接包含的任何头文件的内容组成,减去那些使用条件预处理语句忽略的行.

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

翻译单元的概念通常在"一个定义规则"和模板的上下文中提及.


该术语仅用于C/C++吗?

2> Ana Betts..:

翻译单元用于所有意图和目的,文件(.c/.cpp)完成包括所有头文件之后.

http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx


您可以编译以".h"结尾的文件.文件名根本不重要.内容是.如果"foo.h"的内容是"int main(){}",则可以编译它.
包括头文件.即使没有生成代码,编译器也会处理头文件.另请参阅JeffH的预处理器注释,"编译器看到的所有内容"定义都很好.

3> 小智..:

一个难以回答的难题.C++标准规定:

该程序的文本保存在本国际标准中称为源文件的单元中.通过预处理指令#include将源文件与所有头文件(17.4.1.2)和包含的源文件(16.2)相结合,减去任何条件包含(16.1)预处理指令跳过的任何源代码行,称为转换单元.[注意:C++程序不需要同时进行翻译.]

因此,对于大多数意图和目的,翻译单元是单个C++源文件以及它通过预处理器#include机制包含的头文件或其他文件.

关于你的其他问题:

2)在使用C++编程时,我应该何时考虑使用它

你不能不考虑它 - 翻译单元是C++程序的基础.

3)如果它只与C++有关,或者它可以与其他编程语言一起使用

其他语言也有类似的概念,但它们的语义会略有不同.例如,大多数其他语言不使用预处理器.


@GMan注意标准使用的两个术语:"标题"和"源文件"."header"仅用于标准库.某些代码包含的用户文件不是标准称为"标题",而是"源文件".标准不知道我们可怜的c ++程序员组成的".h"和".cpp"之间的区别:)

4> Ed S...:

这本书很清楚.当Meyers参考"翻译单元"时,他指的是源代码文件.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有