草庐IT

define-ing

全部标签

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++ read()-ing 从套接字到 ofstream

是否有一种C/C++方法可以使用read()从套接字读取数据并将接收缓冲区设为文件(ofstream)或类似的自扩展对象(例如vector)?编辑:当我考虑如何读取可能接收10000+字节文件内容的流套接字时,问题出现了。我只是从来不喜欢将20000或50000字节(现在足够大)作为缓冲区放在堆栈上,在我可以插入文件之前可以临时存储文件。为什么不直接将其流式传输到文件中以加注星标。就像您可以在std:string中获取char*一样,我想到了类似的东西read(intfd,outFile.front(),std::npos);//npos=INT_MAX或类似的东西。结束编辑谢谢。

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++ - 当 static_cast'ing 为仅移动类型时,Clang 与 GCC

考虑以下简单的仅移动类:structbar{constexprbar()=default;bar(barconst&)=delete;bar(bar&&)=default;bar&operator=(barconst&)=delete;bar&operator=(bar&&)=default;};现在,让我们创建一个包装器:templatestructbox{constexprbox(T&&x):_payload{std::move(x)}{}constexprexplicitoperatorT()&&{returnstd::move(_payload);}private:T_payl

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。转换