GNU-C MAX宏写法

来源:互联网 发布:mac上怎么玩英雄联盟 编辑:程序博客网 时间:2024/05/18 21:40
#define MAX(x,y) ({ \    typeof(x) _x=(x);typeof(y) _y=(y); \    &_x==&_y; \    _x>_y?_x:_y; \})

不过以上写法有一个潜在问题,当使用MAX(_y, _x)是;会被替换成如下:

({({ typeof(_y) _x=(_y);typeof(_x) _y=(_x); &_x==&_y; _x>_y?_x:_y; });})

显然,这不是想要的结果,更安全的版本如下:

#define MAX(x,y) ({ \    typeof(x) _##x=(x); typeof(y) _##y=(y); \    &_##x==&_##y; \    _##x>_##y?_##x:_##y; \})
0 0
原创粉丝点击