GCC有一个语句表达式的特性,允许将宏定义为:
#define maxint(a,b) \
({int _a = (a), _b = (b); _a > _b ? _a : _b; })
这在Visual Studio中是不合法的。
微软Visual Studio有类似的功能吗? (我知道,最好使用GCC。但我只是好奇)。
或者,我们只能诉诸于内联函数?
GCC有一个语句表达式的特性,允许将宏定义为:
#define maxint(a,b) \
({int _a = (a), _b = (b); _a > _b ? _a : _b; })
这在Visual Studio中是不合法的。
微软Visual Studio有类似的功能吗? (我知道,最好使用GCC。但我只是好奇)。
或者,我们只能诉诸于内联函数?
Microsoft编译器没有相应的功能来支持这个非标准的GCC语言扩展。
#define maxint(a,b) \
([=] () {int _a = (a), _b = (b); return _a > _b ? _a : _b; }())
a > b ? a : b
有什么不同吗?另外 @drdwilcox,他正在使用 C 而不是 C++,所以模板不是一个选项。 - Seth Carnegie