草庐IT

software-defined-radio

全部标签

c++ - 是否可以在函数中使用#define?

例如,我看到如下源代码。我们可以在函数中使用#define吗?它是如何工作的?(更多信息:这段代码是我从openvswitch源代码中复制的):void*ofputil_put_action(enumofputil_action_codecode,structofpbuf*buf){switch(code){caseOFPUTIL_ACTION_INVALID:#defineOFPAT13_ACTION(ENUM,STRUCT,EXTENSIBLE,NAME)caseOFPUTIL_##ENUM:#include"ofp-util.def"OVS_NOT_REACHED();#defi

#define 中的 C++ void 强制转换和运算符逗号

我在阅读一些源代码时发现了这一点。#defineMACRO(x)if((void)0,(x));elsesome_func();我不完全理解运算符逗号和void强制转换背后的原因。这可能与宏保护有关,我知道(void)0有时用于保护宏中的级联else,例如if(...)然后foo();else(void)0.关于为什么存在运算符逗号的任何想法?编辑:我开始认为这与owl有关(0,0). 最佳答案 我猜这个技巧是用来防止用户在if条件中声明变量的。你可能知道,在C++中这样做是合法的if(inti=some_func()){//you

c++ - 在#define 中使用双冒号 (::)

我可以在#define中使用双冒号吗?我想在实现文件中保存一些文字,例如像这样://foo.h#definetemplatetemplate#definefoo::foo::templateclassfoo{T&baz();};#include"foo.tpp"#undeftemplate#undeffoo:://foo.tpptemplateT&foo::baz(){//dostuff.}但是我遇到了我不太理解的语法错误。(参见codepad上的示例):Line11:error:missingwhitespaceafterthemacronameLine10:error:extrat

c++ - 是否有与子系统关联的#define

我正在使用宏创建main,并且需要能够在编译时检查选定的子系统/SUBSYSTEM:WINDOWS或/SUBSYSTEM:CONSOLE,以便生成适当的main函数。有没有我可以检查的#define来完成这个? 最佳答案 _CONSOLE应该可以为您解决问题。您也可以使用#pragmacomment(linker,"/subsystem:windows")或#pragmacomment(linker,"/subsystem:console")选择子系统,如果您真的很想走这条路。 关于c+

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++ - 为什么静态成员函数_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

javascript - Uncaught Error : define cannot be used indirect

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