草庐IT

m4_define

全部标签

c++ - 有没有办法解决供应商引入的#define?

因此,我们使用的供应商提供了一个库(主要用于C,具有一些C++支持),它执行以下操作:#ifndefint64_t#defineint64_ts_int64#endif#ifndefint32_t#defineint32_ts_int32#endif#ifndefint16_t#defineint16_ts_int16#endif#ifndefint8_t#defineint8_ts_int8#endif在他们图书馆深处的一个标题中。现在的问题是,一旦他们的库包含在简单的C++11代码中,例如:#include#includeintmain(void){std::int32_tstd_

c++ - 如何使用宏本身的信息重新定义 C++ #define 宏?

是否可以使用宏本身的信息重新定义C++#define宏?我尝试了下面的代码,但由于宏的计算方式,输出不是我所期望的。#include#defineFINAL_DEFINE"ABC"#defineNEW_DEFINEFINAL_DEFINE"DEF"//WantABCDEF#undefFINAL_DEFINE#defineFINAL_DEFINENEW_DEFINE//WantABCDEF,butgetempty?intmain(){std::cout 最佳答案 宏主体中的宏在定义宏时从不展开——仅在使用宏时展开。这意味着NEW_DE

c++ - node.js 内部 : How can I find out where `process.binding(' eval')` gets defined?

如何找到node.js的C++源代码中定义了JavaScript对象的位置,我可以通过process.binding('eval')访问它?-在这种特殊情况下,我已经发现它在/src/node_script.cc中,但是:我怎么知道我可以在哪里找到那个模块,当我只是看看/src/目录概览?我不想为了查找模块而遍历/src/中的所有文件。我在哪里可以找到有关process.binding()内部结构的一些深入信息?谢谢。 最佳答案 我今天也在找同样的东西。我不能保证没有更多内容,但这是我发现的。src/node_extensions.

c++ - visual c++ 项目中的#define _WIN32_DCOM a 是什么?

什么是#define_WIN32_DCOM在VisualC++项目中?如果我想将应用程序构建到x64,是否需要将其更改为WIN64_DCOM对象? 最佳答案 FromMicrosoftsupport:IfyourcustominterfaceusesBSTR,VARIANT,orSAFEARRAY,andifyouwanttouseyourcustominterfacemarshalingcodeonlyonaDCOMplatform,youcanuseMIDLgeneratedmarshalingcode.Youwillneedt

C++ Boost read_json 崩溃,我有#define BOOST_SPIRIT_THREADSAFE

最近其他人升级了我们的boost库,现在我在大量调用read_json函数时看到这个coredump。以前从未见过这个。而且我在代码中有#defineBOOST_SPIRIT_THREADSAFE,这就是为什么以前没有发生过这种情况。真的需要帮助!谢谢!程序终止,信号11,段错误。#00x00007f062ce0d094instd::mem_fun1_t>>,boost::spirit::classic::parser_context>>,boost::spirit::classic::grammar>>,boost::spirit::classic::parser_context>*

c++ - "is defined"宏检查及其调用必须处于不同的条件下吗?

我在很多关于SO的主题中寻找答案,但这里有一些看似无辜的代码,当F不是定义的宏时无法编译,intmain(){#ifdefined(F)&&F(0,2,0)return0;#endifreturn1;}问题,根据thissectionoftheGCCmanual是在#if表达式中“表达式中的所有宏都在表达式值的实际计算开始之前展开”,因此这是无效检查,因为F未定义,我明白了,test.cpp:2:20:error:missingbinaryoperatorbeforetoken"("#ifdefined(F)&&F(0,2,0)^我的问题:是像这样正确执行此检查的唯一方法吗?intma

c++ - Qt #define "signals"与 GStreamer (gst) 冲突

Qt,它似乎用一个初始的Q来命名其他所有东西,这样做:#definesignalssignalsinqobjectdefs.h。然而,GStream并不自然地不会将signals想象成一个保留字,而是这样做struct_GDBusInterfaceInfo{/**/volatilegintref_count;gchar*name;GDBusMethodInfo**methods;GDBusSignalInfo**signals;在gdbusintrospection.h中。我只是假设Qt和GStreamer不能很好地协同工作,还是有办法解决这个问题?注意:如果我不#defineQ_MO

C++11 : How can I define a function that accept a universal reference of a specific type of object?

问题:我正在用C++11开发一个程序。我想编写一个接受右值引用和左值引用的函数。(即通用引用)。以下函数接受通用引用参数:templatevoidfunction(T&&t){/*SNIP*/}但是,它接受所有类型的参数。它破坏了函数的类型安全。想让它接受特定类型的参数怎么办?这是我能想到的解决方案:voidfunction(Class&t){/*SNIP*/}voidfunction(Class&&t){function(t);}然而,它很丑陋。如果我想更改要接受的参数或更改函数名称,我必须更新函数的两个版本。有比这更好的等价物吗?编辑:问题已解决。你们都回答得很好。我对两个答案都投

c++ - const vs #define(奇怪的行为)

我曾经用#define替换const,但在下面的示例中它打印了false。#include#definex3e+38usingnamespacestd;intmain(){floatp=x;if(p==x)cout但是如果我替换#definex3e+38与constfloatx=3e+38;它完美运行,问题是为什么?(我知道有几个主题讨论#definevsconst,但真的没明白,请赐教) 最佳答案 在C++中,文字是double的。在第一个示例中,数字3e+38首先在变量初始化中转换为float,然后在比较中返回double。转换

ios - Objective-C : Good way to define C array like MyStruct theArray[18][18]?

我需要使用类似C数组的东西:MyStructtheArray[18][18];但我不能将其定义为属性:@property(nonatomic)MyStructtheArray[18][18];然后我必须:@implementationMyClass{MyStructtheArray[18][18];}但是,就现代ObjectiveC指南而言,这是好的吗?谢谢更新:我知道我可以将结构定义为类并使用NSMutableArray来处理它,但在我的情况下使用C数组更方便,主要关注的是编码指南和内存问题,因为我不分配或释放theArray[18][18],不确定它的生命周期是什么,我正在使用AR