请问这个类似带返回值的宏为啥编译出错

你写的是 C 还是 C++ ?其实可以这么写#define STR_EQUAL(a, b) (strcmp(a, b) == 0)如果确定用 C++ 的话也可以写auto strequal = (const char *lhs, const char *rhs) { return std::strcmp(lhs, rhs) == 0; };至于这个宏定义,用的是 GNU 的表达式语句扩展,只有 GCC 和 Clang 支持。 C++ 中可用 捕获的 lambda 表达式模拟。
■网友
【请问这个类似带返回值的宏为啥编译出错】 ({ ... }) 这种写法是 GCC 扩展,MSVC 是用不了的。


    推荐阅读