GCC具有一个表达式表达式功能,允许将宏定义为:
#define maxint(a,b) \
({int _a = (a), _b = (b); _a > _b ? _a : _b; })
这在Visual Studio中是非法的。
微软Visual Studio中是否有相同的功能? (我知道,我最好使用GCC。但我只是好奇)。
或者,我们是否只需要使用内联函数?
答案 0 :(得分:7)
MS编译器中没有与此非标准GCC语言扩展名相同的内容。
答案 1 :(得分:0)
如果您使用的是C ++,我相信可以使用lambda函数:
#define maxint(a,b) \
([=] () {int _a = (a), _b = (b); return _a > _b ? _a : _b; }())