草庐IT

inline-namespaces

全部标签

c++ - 'ios' : is not a class or namespace name

我正在尝试使用上述代码将矩阵写入文件。但我收到以下错误:'ios':不是类或命名空间名称。我的代码:std::ofstreammyfile;myfile.open("C:/Users/zenitis/Desktop/bots/Nova/data/ownStatus.txt",ios::out|ios::app);for(inti=0;i对这个问题有什么想法吗?? 最佳答案 ios是std的成员。也就是说,您想使用以下方法之一来引用它:usingnamespacestd;//badusingstd::ios;//slightlybet

c++ - "inline"函数定义的目的是什么?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:BenefitsofinlinefunctionsinC++?有什么区别#includeusingnamespacestd;intexforsys(int);voidmain(){intx;cout>x;cout和#includeusingnamespacestd;intexforsys(int);voidmain(){intx;cout>x;cout我猜这两个定义对于代码来说是一样的,那么使用内联函数定义有什么好处呢?

c++ - C2039 : Class is not a member of Namespace

Mage/Interface/Context.h#pragmaonce#include#include#include#includenamespaceMage{namespaceInterface{classContext{protected:RenderingContext*ctx;VertexBuffer*vbo;glm::mat4projection;Mage::Interface::Frame*uiParent;public:Context(RenderingContext*ctx);~Context();voidrender();Mage::Interface::Frame

c++ - "inline"功能的用处

内联有两点:如果编译器确定函数不能内联,则inline关键字将被忽略。有一个编译器优化(在VisualStudio上,我不知道GCC)告诉编译器尽可能内联所有函数。由此我得出结论,我永远不需要为内联操心。我只需为发布版本打开编译器优化。或者在某些情况下,手动内联是首选? 最佳答案 inline关键字有两个作用:它作为编译器执行内联优化的提示(这在现代编译器上基本上没用,现代编译器无论有无关键字都积极内联)它告诉编译器/链接器忽略单一定义规则:inline符号可以在多个翻译单元中定义(通常是因为它是在header中定义的,该heade

c++ - 错误 C2143 : syntax error : missing ';' before 'namespace'

我是C++和OpenGL的新手,我一直在尝试在场景中显示3D对象。它与一个工作正常,但是当我尝试更改我的代码以添加第二个时,我关于显示相机位置的HUD文本的代码开始出错。显示了上面的错误,它显然在sstream文件(#include)中。我试过四处寻找并寻求帮助,但没有任何帮助/我理解。当我注释掉#include行和使用它的代码时,我得到类似的说法“errorC2143:syntaxerror:missing';'在我的main.cpp文件中“使用”之前。我正在运行VisualStudio2010,我什至尝试关闭并重新打开整个系统,并将代码复制到一个新项目中。将不胜感激。#includ

c++ - 有没有办法确保代码只使用来自 std 的名称,而不是全局 namespace ?

当使用格式为的header时,一个实现会将名字放入std命名空间。而且它可能也将名称放入全局命名空间中,如描述的那样here:[ Example:Theheaderassuredlyprovidesitsdeclarationsanddefinitionswithinthenamespacestd.Itmayalsoprovidethesenameswithintheglobalnamespace.[...]— endexample ]是否有(可能依赖于编译器)规避/禁用此行为的方法(我愿意接受任何棘手的解决方案)?我想使用来自std的名字仅,并且我希望在使用来自全局命名空间的名称时出

c++ - 将两个或多个 C++ namespace 合并为一个

首先,对不起我的英语。好的,我正在开发一个执行特定过程的程序。这个过程需要定义一些类和函数。所有这些都必须按block组织才能访问它们。我的第一个想法是使用命名空间(C++),得到这样的东西:namespaceLoadSystem{namespaceParseBlock1{classClassA{...}classClassB{...}classClassC{...}}namespaceParseBlock2{classClassA{...}classClassB{...}classClassC{...}}}所以,我正在阅读以了解这是否好。我已经读到我不能使用很多嵌套命名空间,因此,为

c++ - inline static auto 的 Initializer "sizeof(T)"...是否需要实例化?

如果表达式的类型不相关,但我们用它来初始化静态自动变量,会发生什么?GCC和Clang的行为不同templatestructA{staticinlineautox=sizeof(T{}.f);};Aa;GCC不会引发错误。但是Clang认为这是无效的,因为它实例化了“sizeof”的操作数。GCC似乎跳过了该步骤,因为sizeof(T{}.f)始终具有类型size_t(不依赖于类型),因此它已经知道x没有实例化。如果我们引用x,例如(void)a.x;,两个编译器都会拒绝该程序。它甚至必须解析x的类型吗?如果我没记错的话,C++14以上的语言允许使用“占位符类型”保留事物(如函数)并进

c++ - 在这种特殊情况下,为什么不需要将 std::hash() 的特化注入(inject)到 std namespace 中?

考虑usingnamespacestd;templatestructhash>{inlinesize_toperator()(constpair&v)const{return0;}};在这种情况下,GCC和Clang都可以正常编译,没有任何警告。然而,这似乎与我在网上读到的内容相矛盾,即定义您自己的哈希函数以与标准库的无序类型一起使用需要您将定义放在std命名空间中。有趣的是,专门针对pair:templatestructhash>{size_toperator()(constpair&v)const{size_tseed=0;returnseed;}};如我们所料导致错误。但是,为什

c++ - inline 是否确定内部链接?

我正在尝试extern一个内联函数。我认为它应该如何工作://a.cppinlinevoidf(int){}//b.cppexternvoidf(int);intmain(){f(4);}但是出现链接错误。然后通过阅读this("1)它必须在每个翻译单元中声明为内联。")。我试过的://a.cppinlinevoidf(int){}//b.cppexterninlinevoidf(int);intmain(){f(4);}仍然收到链接错误。但是现在,尝试一些我不知道自己在做什么的事情://a.cppexterninlinevoidf(int){}//b.cppexterninlinev