translation-unit相关内容

翻译单元vs编译单元vs目标文件vs可执行文件vs...在C++中

我找不到翻译单元、编译单元、目标文件、可执行文件之间的区别...在许多地方,我看到使用其中一个而不是另一个。 我知道这些文件是在C++程序编译和链接期间生成的。是否有人可以列出在这些过程中生成的所有文件并指定它们之间的区别? 推荐答案 翻译单元与编译单元相同(因此您的源代码及其包含的所有头文件) 目标文件通常是编译单元编译的结果。 可执行文件是将项目的目标文件与运行时库函 ..
发布时间:2022-04-17 11:16:21 C/C++开发

将Boost.Spirit.X3解析器拆分为多个TU

我又在和Boost.Spirit.X3挣扎. 我有多个逻辑分析器组(语句,表达式等),每个逻辑组由几个文件表示: group.hpp -包含用于使用的那些解析器的 typedef s, BOOST_SPIRIT_DECLARE 和 extern 变量声明“外面" group_def.hpp -包括上一个,并且包含解析器, BOOST_SPIRIT_DEFINE 等的实际定义. gr ..
发布时间:2021-04-15 20:50:56 C/C++开发

使用返回在另一个翻译单元中定义的占位符类型的函数

我在理解具体来说,对标准的一项更改是 如果函数的声明的返回类型包含占位符类型,则从函数主体中的return语句(如果有)中推断出函数的返回类型. 很容易看出,当函数体与声明位于同一文件中时,它是如何工作的;但是考虑头文件使用auto占位符声明方法但不定义的情况. 包含该头文件但不的翻译单元如何成功定义该方法的文件? 例如,给定文件foo.hpp: class foo { ..
发布时间:2020-09-14 04:26:21 C/C++开发

内联函数在不同的翻译单元中具有不同的编译器标志未定义的行为?

在Visual Studio中,您可以为单个cpp文件设置不同的编译器选项.例如:在“代码生成"下,我们可以在调试模式下启用基本的运行时检查.或者我们可以更改浮点模型(精确/严格/快速).这些只是示例.有很多不同的标志. 一个内联函数可以在程序中定义多次,只要定义相同即可.我们将此函数放在标头中,并将其包含在多个翻译单元中.现在,如果不同cpp文件中的不同编译器选项导致该函数的编译代码略有不 ..

在确保翻译单元之间的可用性时是否静态弃用?

从以下 stackoverflow answer ,用户说: 这意味着变量对于翻译单元是本地的(简单地说, 到单个源文件),并且不能从外部访问它。这个 的静态使用实际上在当前的C ++标准 - 中被弃用,而不是你应该使用匿名命名空间: static int x = 0; 应该是: namespace { int x = 0; } ..

模板实例在不同的翻译单元

据我所知,每个模板在每个翻译单元上都有不同的实例,为了我的理解,翻译单元大致是一个 cpp 文件。 所以,如果我有一个名为 test.hpp 的文件,包含以下内容: // test.hpp template void test() { static T t = T(0); return t ++; } 对于每个翻译单元,我应该 ..
发布时间:2016-11-02 23:11:12 C/C++开发