translation-unit相关内容
我找不到翻译单元、编译单元、目标文件、可执行文件之间的区别...在许多地方,我看到使用其中一个而不是另一个。 我知道这些文件是在C++程序编译和链接期间生成的。是否有人可以列出在这些过程中生成的所有文件并指定它们之间的区别? 推荐答案 翻译单元与编译单元相同(因此您的源代码及其包含的所有头文件) 目标文件通常是编译单元编译的结果。 可执行文件是将项目的目标文件与运行时库函
..
我有下面的树: .├── func1.c├── func2.c├── main.c├── 生成文件├── override.c└── 弱.h main.c 调用 func1(). func1() 调用 func2(). weak.h 将 func2() 声明为弱. override.c 提供了 func2() 的覆盖版本. func1.c #include void func
..
我又在和Boost.Spirit.X3挣扎. 我有多个逻辑分析器组(语句,表达式等),每个逻辑组由几个文件表示: group.hpp -包含用于使用的那些解析器的 typedef s, BOOST_SPIRIT_DECLARE 和 extern 变量声明“外面" group_def.hpp -包括上一个,并且包含解析器, BOOST_SPIRIT_DEFINE 等的实际定义. gr
..
我在理解具体来说,对标准的一项更改是 如果函数的声明的返回类型包含占位符类型,则从函数主体中的return语句(如果有)中推断出函数的返回类型. 很容易看出,当函数体与声明位于同一文件中时,它是如何工作的;但是考虑头文件使用auto占位符声明方法但不定义的情况. 包含该头文件但不的翻译单元如何成功定义该方法的文件? 例如,给定文件foo.hpp: class foo {
..
我有一些可以检查的课程.实现此功能的代码在头文件中声明一个功能模板,并在不同的源文件中对其进行专门处理: // check.h template bool check(const T& object); // class1.h struct Class1 {int mass;}; // check_class1.cpp #include "class1.h" #i
..
在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 ++; } 对于每个翻译单元,我应该
..
有人可以解释这个C ++编译错误的本质吗?我正在深入/学习关于重载全局运算符new,delete和它们的变体。我阅读了情侣 of 文章 开
..