腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
c++
宏
扩展
(__
VA_ARGS__
项目名称
和
值
)
、
、
make_pair("var2", var2), std::make_pair("var3", var3),} 简而言之,使用FAKE_MACRO(var1, var2, var3);我想要获得
扩展
代码
浏览 18
提问于2020-01-15
得票数 0
回答已采纳
1
回答
如何解决“必须至少为变量
宏
的‘.’参数指定一个参数”
、
、
您可以在
C++
中定义一个多样化的
宏
,如:但是,将FOO作为FOO(1)调用将导致
宏
展开bar(1,),这显然是一个语法错误因此GCC包括一个GNU分机:这将使给定的示例
扩展
到所需的结果bar(1)。虽然__
VA_ARGS__
是一个GNU
扩展
,但它也得到了clang的支持,但它在-peda
浏览 2
提问于2021-06-09
得票数 5
4
回答
VisualStudio中带有零参数的参数计数
宏
、
、
gcc在## __
VA_ARGS__
大会上确实支持用零参数计算
宏
的论点。与gcc合著的作品如下:#define __NARGS(_0,_1,_2,_3,_4,_5,N,...)("%d\n", NARGS(1)); // prints 1 printf("%d\n", NARGS(1, 2));
浏览 4
提问于2014-10-31
得票数 4
回答已采纳
1
回答
C只有在存在争论的情况下才能进行
宏
处理
、
我试图弄清楚如何编写一个预处理
宏
,只有当存在一个参数时,它才会“压缩”它的参数。编辑MAP_LIST来自以下项目: 如果我的VA_ARGS lsit中有项目,那么您将得到以下结果
浏览 3
提问于2021-07-27
得票数 0
1
回答
使用gcc
和
clang的变量
宏
展开的奇怪行为
、
、
、
我正在用
C++
编写一个可变的dispatcher
宏
,根据提供给dispatcher的参数数量(从无到5个)调用不同的
宏
。)(__
VA_ARGS__
) NAMEDARGS是dispatcher
宏
;使用1个参数调用它将导致调用带有1个参数的NAMEDARGS1,依此类推(我不提供各种NAMEDARGS#的实现,因为它们在这个上下文中是不相关的我测试了代码gcc 7.1.1,在使用-std=c++14标志时,我发现了一个奇怪的gcc
扩展
行为。我认为这可能是因为##__
VA_ARGS__
浏览 0
提问于2017-08-02
得票数 3
4
回答
在
宏
(X)(Y)中翻转X
和
Y的顺序
、
我有一个基于
C++
宏
的DSL,它定义了如下
宏
: enable_if_t<__
VA_ARGS__
WHEN 这一用途如下:auto some_function(T t) -> (requires SomeCo
浏览 2
提问于2019-02-12
得票数 6
回答已采纳
1
回答
如何测试
宏
标识符是否不使用#ifdef而被定义?
、
、
、
、
有谁知道如何,或者如果可能的话,创建一个变量
宏
,如果它的参数不是定义的
宏
,而是
扩展
到1,如果它的参数是定义的
宏
,则
扩展
到0?(我在使用c99。)它需要是一个多样化的
宏
(如果可能的话),这样我就可以这样做:#define CAT(x, y) CAT_(x, y)#define CLEANUP1(...)XY
浏览 2
提问于2021-03-09
得票数 1
2
回答
用于调试日志语句的预处理器
宏
在
C++
中有位置吗?
、
、
、
、
最近,我一直在阅读Scott的有效
C++
第二版,以改进
C++
最佳实践。他列出的一项建议鼓励
C++
程序员避免使用预处理器
宏
,而“更喜欢编译器”。他甚至说,除了#include
和
#ifdef/#ifndef之外,在
C++
中几乎没有任何理由使用
宏
。#define min(a,b) ((a) < (b) ?编辑--如果a
和
b的数据类型不同,则此模板声明将不完全匹配指定的
宏</em
浏览 5
提问于2013-08-04
得票数 7
回答已采纳
5
回答
C\
C++
预处理器重载
宏
的不同参数
、
我有
宏
像,史密斯像所以我想实现这个
宏
的接口-另一个
宏
,但我想支持两种类型:LOG_TRACE(my_logger, msg);我有一些全局记录器,第一个
宏
将使用全局记录器编写msg。__LOG_TRACE(__
VA_ARGS__
, current_active)LOG_TRACE(msg); LOG_TRACE(msg, logge
浏览 0
提问于2011-07-27
得票数 0
回答已采纳
2
回答
C
宏
,返回错误的参数编号
、
我有以下
宏
:#definex) FOR_EACH_2(what, __
VA_ARGS__
)#define FOR_EACH_8(what, x, ...) what(x) FOR_EACH_
浏览 3
提问于2012-11-06
得票数 4
回答已采纳
1
回答
我可以使用哪些非标准的C功能?
、
、
C
和
C++
都有标准,但支持并不完美,互联网上唯一可用的副本是草稿,还有一些非常有用的不标准的东西,比如__attribute__((cleanup))。还有其他GCC
扩展
(比如
宏
中的空__
VA_ARGS__
和
__
VA_ARGS__
为空时标记粘贴多余逗号的能力),clang已经决定应该抛出一个警告。是否有任何类似的
C++
编译器服务,可以让我快速地搜索__attribute__((cleanup))并获得支持它的编译器列表?
浏览 0
提问于2021-02-16
得票数 -2
回答已采纳
2
回答
如何创建一个
宏
来验证HR
和
日志?
所以我想定义一个
宏
,就像- if (b == 0)VerifyOrThrow(functionA(), FUNCTION_ERROR,this is the %d error in this file called %s); 问题是我不确定如何为日志字符串的可变长度参数定义
宏
。
浏览 0
提问于2011-04-26
得票数 1
回答已采纳
4
回答
即使使用##__
VA_ARGS__
,具有零参数的变量
宏
也不会编译
、
、
Dummy("Hello", ##__
VA_ARGS__
) {}g++ -std=c++17 -O3 -Wall main.cppDummy("Hello", ##__
VA_ARGS__
)main.cpp:10:5:Dummy(dummy, ##__
VA_ARGS__
) { DUM
浏览 7
提问于2020-09-04
得票数 2
回答已采纳
1
回答
编译似乎是在预处理器
宏
扩展
之前开始的。
、
、
我正在尝试创建一个要导出的
C++
DLL,并且我需要导出一个类的所有函数。+编译器甚至在所有
宏
扩展
之前就开始编译了,这就抛出了像疯狂一样的编译时错误,显示如下所示:但是当我使用(Ride
浏览 2
提问于2021-02-18
得票数 0
回答已采纳
3
回答
宏
未正确展开
我定义了这些
宏
:如果只传递一个参数,则希望将其发送到AL_ASSERT_NO_MSG然而,当我使用像这样的
宏
:AL_ASSERT(false, "Test")时,它
扩展
到if (!(false, "Test")) { assertDialog(23, "
浏览 5
提问于2022-07-08
得票数 6
回答已采纳
2
回答
使用变量参数的
宏
、
、
如果我可以在
宏
函数中使用变量参数,并使下面的宏代码工作,请让我知道。 换句话说,有没有什么方法可以在va_start中使用局部变量。
浏览 29
提问于2020-01-14
得票数 2
1
回答
为什么除非前面有一个命名的参数,否则变量
宏
在“)”标记之前的预期主表达式会失败?
、
、
、
我正在尝试创建一些使用各种参数的跟踪
宏
。只有在命名的参数出现在变量之前时,
宏
才能正常工作。TraceTest("a"); // worksTraceTest1("a"); // works 我
浏览 0
提问于2019-05-30
得票数 0
回答已采纳
1
回答
一个简单的c++11
宏
、
、
我正在尝试构建一个简单的
c++
宏
,但我甚至无法开始。到目前为止,谷歌并没有提供任何帮助。int main () { }g++ -fpermissive -std=gnu++11 -g3 -I/eclipse/workspace__
VA_ARGS__
4.__
VA_ARGS__
8
浏览 2
提问于2016-12-02
得票数 0
1
回答
C预处理器,
宏
“重载”
、
、
、
我试图做某种
宏
“重载”,使
宏
(某物)与
宏
(某些东西,其他东西)不同地展开。使用从获得的片段(我不确定它是否100%可移植)
和
Boost PP库中的一些功能,我能够让它工作:D#define(__
VA_ARGS__
)), function_C(VA_ARG(1, __
VA_ARGS__
) + VA_ARG(2, __
VA_ARGS__
)), BOOST_PP_EMPT
浏览 2
提问于2010-08-06
得票数 4
回答已采纳
3
回答
MSVC++变量
宏
扩展
、
、
、
所以我有一个
宏
,可以在GCC中很好地工作,但不能在微软的
C++
编译器中工作。我希望有人知道一种变通方法,或者可以向我解释为什么它会这样。我确信这个
宏
不完全是“标准的”,但它确实能帮助我解决这个问题。#define VA_NARGS_IMPL(_1, _2, _3, _4, _5, N, ...)VA_NARGS_IMPL(__
VA_ARGS__
, 5, 4, 3, 2, 1) MAC ## coun
浏览 0
提问于2012-02-08
得票数 25
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
C/C+编程笔记:C语言被人遗忘的运算符,了解三点即可掌握!
Visual Studio中相对路径中的宏定义,值得收藏学习!
中宏保险发布2023年度客户服务和净推荐值报告
在CMake中指定项目名称的方法
C+快速入门:1.创建工程和C+程序骨架
热门
标签
更多标签
云服务器
ICP备案
云直播
对象存储
腾讯会议
活动推荐
运营活动
广告
关闭
领券