在Visual Studio中是否有一个等价的语句表达式?

SHH*_*SHH 10 c gcc visual-studio

GCC具有一个表达式表达式功能,允许将宏定义为:

#define maxint(a,b) \
   ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
Run Code Online (Sandbox Code Playgroud)

这在Visual Studio中是非法的.

在microsoft visual studio中是否有相同的功能?(我知道,我最好使用GCC.但我只是好奇).

或者,我们是否只需要使用内联函数?

Dav*_*nan 7

MS编译器中没有这种非标准GCC语言扩展的等价物.


Bry*_*yan 6

如果您使用 C++,我相信可以使用 lambda 函数:

#define maxint(a,b) \
   ([=] () {int _a = (a), _b = (b); return _a > _b ? _a : _b; }())
Run Code Online (Sandbox Code Playgroud)

  • Visual Studio 是否支持 *C* 中的 lambda 函数? (4认同)
  • 无论如何,这并不相同,例如在语句表达式中,您可以从函数返回,但不能使用 lambda 来做到这一点。 (4认同)