translation-unit

    1热度

    1回答

    据我所知,每个翻译单元上的每个模板都有不同的实例,而据我的理解,翻译单元大致是一个cpp文件。 所以,如果我有一个包含以下内容命名test.hpp文件: // test.hpp template <typename T> void test() { static T t = T(0); return t++; } 对于每一个翻译单元,我应该有test不同的实例,即使模

    1热度

    2回答

    对于某个对象的唯一标识,我可以用两种方法创建计数器,但我不知道哪一个更好虽然它们在代码中有很大不同不是字节码,我不知道)。 第一种方法是将有它使用一个静态变量一些功能: 部首: unsigned int GetNextID(); CPP: unsigned int GetNextID() { static unsigned id{0}; return id++; }

    3热度

    1回答

    从下面stackoverflow answer,用户说: 这意味着该变量是本地的一个翻译单元(简单地说, 到一个源文件),并且不能从外面访问。这 使用静态的其实是在当前的C++标准弃用 - ,而不是你应该使用匿名的命名空间: static int x = 0; 应该是: namespace { int x = 0; } 我不不同意匿名命名空间是首选的方法, 但现在使用静态真的

    2热度

    2回答

    例子: 说我包括我的预编译头文件: #include <vector> 作为载体的少数情况下,如性病::载体,性病::向量等等都在我的项目经常使用,将它减少编译时间,如果我在这样的precomiled头实例他们还有: #include <vector> template class std::vector<float>; template class std::vector<int>;

    3热度

    2回答

    因此,我知道静态函数是文件本地的函数。因此,他们不能从其他文件访问。这是否也适用于课程?我已经读了很多关于static class如何不声明类包含纯静态成员和方法(这是显而易见的)的争议,但是找不到任何提及该类是否可以在本地访问的类文件范围,更符合逻辑。 如果没有,那么使用匿名命名空间,我听说也可以用来声明文件本地函数?

    3热度

    1回答

    我在理解N3638中描述的auto类型说明符的C++ 14扩展如何实现以及允许的内容方面有些困难。 具体变化为标准人说, 如果函数的声明的返回类型包含的占位符类型,函数的返回类型从return语句中的身体推导功能,如果有的话。 当函数的主体与声明位于同一个文件中时,很容易看出它是如何工作的;但考虑一下头文件声明使用auto占位符的方法但未定义它的情况。包含此头文件但包含而非的翻译单元如何包含定义成

    -1热度

    1回答

    以下内容将生成正常。当我尝试在不同的库中使用函数时,出现链接器错误。 OtherClass.obj : error LNK2019: unresolved external symbol "public: float __cdecl myClass::myClassStruct::myConvoludedFunction(int,int)" ([email protected]@[email pr

    3热度

    1回答

    我无法找到翻译单元,编译单元,目标文件,可执行文件之间的区别......在很多地方我看到过那个被用来代替其他。 我知道这些文件是在C++程序编译和链接期间生成的。任何人都可以列出在这些过程中生成的所有文件,并指定它们之间的区别?

    12热度

    1回答

    有人可以解释这个C++编译错误的性质吗?我正在研究/学习如何重载全球运营商的新增,删除及其变体。我读了一个coupleofarticlesonthesubject,但我找不到一个似乎专门解决这个问题。 守则 foo.h: #ifndef foo_h #define foo_h void* operator new(size_t); void* operator new[](size_t);