草庐IT

apc_define_constants

全部标签

c++ - std::is_constant_evaluate 行为

GCC9已经实现了std::is_constant_evaluated。我用它玩了一点,我意识到它有点棘手。这是我的测试:constexprintFn1(){ifconstexpr(std::is_constant_evaluated())return0;elsereturn1;}constexprintFn2(){if(std::is_constant_evaluated())return0;elsereturn1;}intmain(){constexprinttest1=Fn1();//Evaluatesto0inttest2=Fn1();//Evaluatesto0intcons

c++ - 警告 : overflow in implicit constant conversion

在下面的程序中,第5行确实按预期给出了溢出警告,但令人惊讶的是,第4行在GCC中没有给出任何警告:http://www.ideone.com/U0BXnintmain(){inti=256;charc1=i;//line4charc2=256;//line5return0;}我在想这两行都应该给出overflow警告。还是我缺少什么?我做这个实验的主题是:typedeftypechecking?在那里我说了以下内容(我从答案中删除了,因为当我运行它时,它并没有像我预期的那样显示)://However,you'llgetwarningforthiscase:typedefintT1;ty

c++ - 使用 #ifdefs 和 #define 可选择将函数调用转换为注释

有没有可能做这样的事情#ifdefSOMETHING#definefoo//#else#definefooMyFunction#endif这个想法是,如果SOMETHING被定义,那么对foo(...)的调用将成为注释(或不会被评估或编译的东西),否则它会成为对MyFunction的调用。我见过使用__noop,但我不相信我可以使用它。编辑:我不认为我真的可以在这里使用宏,因为MyFunction接受可变数量的参数。另外,我想让它不评估参数!(因此,像注释掉MyFunction的主体之类的操作并不能真正满足我的需要,因为仍然会评估参数) 最佳答案

c++ - 如何使用 typedef 检查数据类型是否为 "defined"

我今天遇到了这个问题,只是想知道如何检查用typedef定义的新类型是否真的在某处定义。举个例子,我开始使用从源代码构建的Xerces-c3库并编写了一个xml2text转换器。但是我在fbsd上找不到Xerces-c3端口,所以安装了Xerces-c2库。当我尝试重新编译源代码时,出现以下错误:XML2Text.cc:83:error:cannotdeclarevariable'handler'tobeofabstracttype'XML2TextHandlers'XML2TextHandlers.h:32:note:becausethefollowingvirtualfunctio

c++ - 警告 : deprecated conversion from string constant to 'char*' '

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Howtogetridofdeprecatedconversionfromstringconstantto‘char*’warningsinGCC?我使用库中的以下函数,但我无法更改:HRESULTDynamicTag(char*pDesc,int*constpTag);我使用它如下。我已经创建了实现上述功能的库提供的类的对象。inttag=0;g_pCallback->DynamicTag("MyLogger",&tag);我收到以下警告:warning:deprecatedconversionfromst

c++ - 为什么静态成员函数_declared_是静态的,而在C++中却是_defined_?

这是一个最小的工作示例:啊哈:classA{staticinta_member_function();};A.cpp#include"A.h"intA::a_member_function(){return5;}intmain(){return1;}这段代码编译并运行,但是,在我看来:staticintA::a_member_function(){return5;}可以很容易地用于定义类A的静态成员函数。事实上,有这个要求似乎实际上是相当有用的,因为它会提醒.cpp文件的读者a_member_function是静态的.但是,这显然行不通:error:cannotdeclaremembe

C++ 预处理器#define-ing 一个关键字。是否符合标准?

帮助解决thisquestionaboutbooland1评论中正在进行的辩论:符合标准的C++预处理器能否允许使用#define重新定义语言关键字?如果是这样,符合标准的C++预处理器是否必须允许这样做?如果C++程序重新定义了语言关键字,那么该程序本身是否符合标准? 最佳答案 在C++中,最接近于禁止#define关键字的是§17.4.3.1.1/2,它只在包含标准库头文件的翻译单元中禁止它:Atranslationunitthatincludesaheadershallnotcontainanymacrosthatdefine

c++ - msbuild:在命令行中设置特定的预处理器#define

在C++文件中,我有这样的代码:#ifACTIVATE#pragmamessage("Activated")#else#pragmamessage("NotActivated")#endif我想使用msbuild命令行将此ACTIVE定义设置为1。试过了,还是不行:msbuild/p:DefineConstants="ACTIVATE=1"有什么想法吗? 最佳答案 我参加聚会有点晚了(只有4年左右),但我只需要在一个项目中解决这个问题,并在寻找解决方案时偶然发现了这个问题。我们的解决方案是使用其中定义了/D的环境变量,并结合Visu

c++ - 错误 : invalid suffix "b11111111111111111111111111111111" on integer constant

我在RHEL5.7x86_64机器上使用g++版本4.1.2。这与RHEL6.0x86_64附带的g++版本4.4.5构建得很好。这个编译器错误是什么意思,如何解决?[mehoggan@hoggant35002C]$g++-Wall-obinary./binary.cpp./binary.cpp:2:5:error:invalidsuffix"b11111111111111111111111111111111"onintegerconstant./binary.cpp:3:5:error:invalidsuffix"b11111111111111111111111111111110"o

javascript - Uncaught Error : define cannot be used indirect

我正在使用webpack和babel在我正在制作的nodeexpressReact应用程序中转换我的es6/jsx文件。在我包含google电子表格npm模块并尝试将其导入我的项目之前,一切都很好。我收到错误UncaughtError:define不能间接使用,但导入的模块内没有define语句。当webpack打包我的文件时,这个错误只显示在浏览器中,而不是我的控制台中,并且完全停止在页面上呈现任何内容。我认为这与AMD/Commonjs有关,但我太缺乏经验,无法确定,或者如果是这种情况该怎么办。任何帮助将不胜感激 最佳答案 只是