gcc的宏定义参数可以为函数调用??求指教~

Cacar 2014-03-04 04:02:33
代码如下,在gcc中可以编译运行,visual c++下面一堆语法错误,intel cpp compiler下面提示宏定义MAX位置"expect an expression"??什么原因造成的差异呢?C99?也不像啊~真诚求教
#defineMAX(x,y) ({ \
const double_x = (double)(x); \
const double_y = (double)(y); \
_x>_y ? _x : _y; })

int temp(int a,int b)
{
intc=a+b;
return c;
}
int main()
{
intd = MAX(3,temp(2,3));
return 0;
}
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cacar 2014-03-04
  • 打赏
  • 举报
回复
引用 5 楼 bluesky12312388 的回复:
是gcc对宏的扩展。 参考http://book.51cto.com/art/201007/213547.htm
谢谢!
Cacar 2014-03-04
  • 打赏
  • 举报
回复
引用 6 楼 gqjjqg 的回复:
少些兼容性不好的代码,对大家都好...
是我要用别人的代码,呵呵
gqjjqg 2014-03-04
  • 打赏
  • 举报
回复
少些兼容性不好的代码,对大家都好...
bluesky12312388 2014-03-04
  • 打赏
  • 举报
回复
是gcc对宏的扩展。 参考http://book.51cto.com/art/201007/213547.htm
Saleayas 2014-03-04
  • 打赏
  • 举报
回复
这是 gcc 的用法,VC 曾经盼望已久的用法。
Cacar 2014-03-04
  • 打赏
  • 举报
回复
也不对,似乎是括号的问题,不知道是什么个讲法,切换了c99也还是这样…
Cacar 2014-03-04
  • 打赏
  • 举报
回复
似乎是宏定义中不能嵌套变量定义的问题…gcc中可以通过。有什么说法么?
zhxianbin 2014-03-04
  • 打赏
  • 举报
回复
#define MAX(x,y) 之前加个声明试试 int temp(int a,int b);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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