草庐IT

preprocessor-directive

全部标签

关于刷新nginx配置报nginx: [emerg] unknown directive错误的问题

场景说明朋友在windows服务器用记事本编辑nginx配置文件后,刷新nginx配置,nginx返回以下错误:nginx:[emerg]unknowndirective"锘?user"inC:\nginx-1.12.2/conf/nginx.conf:1原因unknowndirective是未知指令的意思,后面带着未知指令的内容是"锘?user"。由此判断,是nginx配置文件编码不正确的原因。事实上,windows的记事本编辑文本后,会以ASCII码编码进行保存。这与nginx配置文件的utf8编码不符合。解放方法重新编辑nginx配置文件,以utf8编码保存。以下是要在Windows的记

c++ - 内存处理(即函数 Release)究竟如何与 Direct3D 一起工作?

我在我的Direct3D应用程序中遇到了一个泄漏,我最终纠正了它,但我认为泄漏的原因是由于我对Direct3D处理其内存和接口(interface)的方式的误解。我无法找到关于它的权威文章/教程(如果有请提供),但根据我收集到的信息,它是这样工作的:每次调用Get方法时,返回对象的引用数都会增加。因此,如果我调用GetRenderTarget,被渲染到的表面的引用计数会增加。在接口(interface)上调用Release会减少其引用计数。前两点结合起来本质上意味着:每次获得接口(interface)时,用完后释放它。当引用计数达到0时,实例将被删除。我不完全确定这是否正确,但它似乎在

c++ - 在 direct3d11 对象上使用 std::shared_ptr 的自定义删除器

当我使用std::shared_ptr并需要一个自定义删除器时,我通常会创建一个对象的成员函数来促进它的销毁,如下所示:classExample{public:Destroy();};然后当我使用共享ptr时,我只是这样:std::shared_ptrptr(newExample,std::mem_fun(&Example::Destroy));问题是,现在我正在使用d3d11,我想将com发布函数用作std::shared_ptr自定义删除器,就像这样std::shared_ptrptr(nullptr,std::mem_fun(&ID3D11Device::Release));但是

c++ - 避免双重包含 : Preprocessor directive vs. makefile

我正在努力从弗兰肯斯坦和一个文件数千行的程序转变为结构良好、组织良好的多文件程序。现在看起来很自然(天真)的是为我的三个文件制作一个包含标题的三角恋:file_1包括file_2、file_4file_2包括file_3、file_4file_3包括file_1....等等等等这些文件具有我在其他文件之间需要的变量、方法、结构等。当然,我遇到了双重包含错误。我的问题:我应该通过在header中使用预处理器指令(例如,完全在header中包括结构、方法等)来避免这些问题,还是应该使用makefile进行编译(我hear也可以用来解决这个问题---但我从来没有做过)?

c++ - 如何使用 Direct3D 设备管理器?

我想在我的Direct3D应用程序中的多个线程和对象之间共享一个Direct3D设备。我遇到了Direct3D设备管理器,它看起来像我想要的,虽然我没有做任何视频处理或视频加速:http://msdn.microsoft.com/en-us/library/windows/desktop/aa965267(v=vs.85).aspx在我的代码中,我正在执行以下操作://CreatethedevicemanagerUINTresetToken=0;IDirect3DDeviceManager9*deviceManager=NULL;if(FAILED(DXVA2CreateDirect3

c++ - 不合格的名称查找 : Why local declaration hides declaration from using directive

考虑这段代码:namespaceA{inti=24;}namespaceB{usingnamespaceA;inti=11;intk=i;//findsB::i,noambiguity}和basic.lookup.unqual.2:§6.4.1Unqualifiednamelookup[basic.lookup.unqual]Thedeclarationsfromthenamespacenominatedbyausing-directivebecomevisibleinanamespaceenclosingtheusing-directive;see[namespace.udir].F

c++ - 通过 using-directive 在 using-declaration 中查找名称

根据c++标准,下面的程序是良构还是病构的?namespaceN{inti;}usingnamespaceN;using::i;intmain(){}我用不同的编译器得到不同的结果:Clang(http://melpon.org/wandbox/permlink/c8vl7XbumyyS6vsw):没有错误。GCC(http://melpon.org/wandbox/permlink/immhNeWFCMcCA800):错误:'i'未声明。根据c++标准,这个程序是良构还是病构的?需要对c++标准的引用。我想弄清楚我应该为哪个编译器提交错误。 最佳答案

c++ - 在哪里指定预处理器指令是合法的?

我正在尝试编写一个状态机,它可以读取源文件并将其拆分为编译器业务或预处理器业务的部分。不是深度遍历,我只是在寻找注释或预处理器指令的部分。(没有宏,没有条件编译block等)注释很简单,但我不能100%确定在何处指定预处理器指令是合法的。例如,下面一行是否合法?inti;#include是否存在允许某些指令而其他指令不允许的特殊情况?我搜索了谷歌和SO,但没有找到可以回答这个问题的问题。请同时回答C和C++,我是有意和有意标记的。 最佳答案 预处理器指令可以出现在任何地方,只要它们是行中的第一个非空白标记即可。因此,你不能写inti

c++ - 是否允许注释与预处理器指令在同一行,在这种情况下它们的含义是什么?

我正在考虑这样的事情:#include//Comment好吧,cppreference.com(http://en.cppreference.com/w/cpp/preprocessor)声称:Thepreprocessingdirectivescontrolthebehaviorofthepreprocessor.Eachdirectiveoccupiesonelineandhasthefollowingformat:#characterpreprocessinginstruction(oneofdefine,undef,include,if,ifdef,ifndef,else,el

c++ - 了解预处理器指令

为什么这段代码没有编译?如果我理解正确,这应该编译。我哪里错了?#defineTHREADMODELASC#ifTHREADMODEL==NOASCTHISBLOCKSHOULDN'TBECOMPILED#endifintmain(){} 最佳答案 当预处理器解释#ifTHREADMODEL==NOASC它将用ASC替换THREADMODEL:#ifASC==NOASC除非你有#definedASC和NOASC有数值,预处理器将用0值替换它们(它需要任何undefinedsymbol并将其替换为0):#if0==0然后计算结果为1,