从不带gcc花括号组的宏返回值

beq87vna  于 2023-03-22  发布在  其他
关注(0)|答案(1)|浏览(156)

如果我有一个这样的宏:

#define some_macro(x,y,z)({
    operation1;
    operation2;
    ...;
    x+y+z; //return value
})

我怎么能让它返回值而不使用gcc花括号组({})?我也不能添加任何其他参数到宏.我得到这个编译器消息:

warning: ISO C forbids braced-groups within expressions [-Wpedantic]

但我需要的代码是可移植的,不仅为gcc。

zpqajqem

zpqajqem1#

您可以使用comma operator,它允许将多个表达式组合成一个表达式。这比GCC语句表达式(可能包含变量声明,forwhileswitch等)更具限制性,但如果operation1operation2以及其余的 * 表达式 *,则逗号运算符有效。

#define some_macro(x,y,z) (operation1, operation2, (x)+(y)+(z))

如果这不起作用,您可以定义一个函数。

相关问题