宏定义中省略号使用方式?

小竹z 2016-04-08 12:24:21
代码如下:

错误信息:

windows vs编译可通过,但linux 下g++报错,怎么解决呢?
...全文
363 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-04-08
  • 打赏
  • 举报
回复
__VA_ARGS__在visual studio中展开似乎非常不可控,在宏定义中将__VA_ARGS__传入到其他宏的参数中会被其他宏当作一个参数处理。 __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
小竹z 2016-04-08
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
双下划线的东西需要编译器支持,经测试, windows下g++支持,这是语言特性,不可能windows支持而linux不支持
错误原因貌似是说宏需要第2个参数,但是我的理解是省略号可以省略,应该没问题额,但是我的centos7 g++编译器确实报错。
dustpg 2016-04-08
  • 打赏
  • 举报
回复
双下划线的东西需要编译器支持,经测试, windows下g++支持,这是语言特性,不可能windows支持而linux不支持

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧