我当时正在读Scott Meyers写的“Effective c++” 偶然发现了“翻译单元”这个术语。
谁能给我解释一下:
到底是什么? 当我用c++编程时,什么时候应该考虑使用它? 它只与c++相关,还是也可以与其他编程语言一起使用?
我可能已经在不知道术语的情况下使用它了……
我当时正在读Scott Meyers写的“Effective c++” 偶然发现了“翻译单元”这个术语。
谁能给我解释一下:
到底是什么? 当我用c++编程时,什么时候应该考虑使用它? 它只与c++相关,还是也可以与其他编程语言一起使用?
我可能已经在不知道术语的情况下使用它了……
翻译单元是一个文件(.c/.cpp),在它包含了所有的头文件之后。
http://web.archive.org/web/20091213073754/http: / / msdn.microsoft.com/en-us/library/bxss3ska (VS.80) . aspx
从这里:(时光倒流机链接)
According to standard C++ (wayback machine link) : A translation unit is the basic unit of compilation in C++. It consists of the contents of a single source file, plus the contents of any header files directly or indirectly included by it, minus those lines that were ignored using conditional preprocessing statements. A single translation unit can be compiled into an object file, library, or executable program. The notion of a translation unit is most often mentioned in the contexts of the One Definition Rule, and templates.
这是一个很难明确回答的问题。c++标准声明:
在本标准中,程序的文本以称为源文件的单位保存。源文件 连同所有的头文件(17.4.1.2)和包括的源文件(16.2)通过 预处理指令#include,减少被跳过的任何源行 条件包含(16.1) 预处理指令,称为翻译单元。[注:a c++ 程序不需要全部翻译 同一时间。]
因此,对于大多数意图和目的来说,翻译单元是一个单独的c++源文件和它通过预处理器#include机制包含的头文件或其他文件。
关于你的其他问题:
我应该什么时候考虑使用它 当用c++编程时
你不能不用它——翻译单元是c++程序的基础。
如果它只与c++相关,或者它 可以与其他编程一起使用吗 语言
其他语言有类似的概念,但它们的语义略有不同。例如,大多数其他语言不使用预处理器。
根据MSDN: C和c++程序由一个或多个源文件组成,每个源文件包含程序的一些文本。源文件与其包含文件(使用#include预处理器指令包含的文件)一起,但不包括被条件编译指令(如#if)删除的代码部分,称为“翻译单元”。
在我看来,“翻译单元”通常是一个“后预处理”源文件。您可以在这个MSDN页面上获得更多详细信息。http://msdn.microsoft.com/en-us/library/bxss3ska (v = vs.80) . aspx
C和c++程序由一个或多个源文件组成,每个源文件包含程序的一些文本。源文件与其包含文件(使用#include预处理器指令包含的文件)一起,但不包括被条件编译指令(如#if)删除的代码部分,称为“翻译单元”。