请问这个类似带返回值的宏为啥编译出错
你写的是 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 是用不了的。
推荐阅读
- 如果你的多肉出现这个长势,要注意这个细节,多肉才会越来越美!
- 『活动』让孩子们欢欢喜喜过新年 这个元旦好有爱!南京聋校举办多种形式庆祝活动
- 免费“单人套餐”背后的故事:爱心让这个冬天不再寒冷
- 夫子庙■“秦淮灯会”“夫子庙小吃”等非遗重点保护 护航夫子庙,这个法明年施行
- 气温■@江苏人,这个周末天气晴!温度缓慢回升,早晚依旧“冻”人
- 黄金时间■黄金时间丨哪种产品最节水?购买产品请注意这个标识!
- 『黄金时间』请认准这个蓝色的标志! 黄金时间丨同行业中用水最少的企业
- 汽车|评测 | 懂你所想,予你所需!依维柯欧胜2021款这个“搭档”可还行?
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 电动车|这个月,原来小编们这么拼