如果我有一个这样的宏:
#define some_macro(x,y,z)({
operation1;
operation2;
...;
x+y+z; //return value
})
我怎么能让它返回值而不使用gcc花括号组({})?我也不能添加任何其他参数到宏.我得到这个编译器消息:
warning: ISO C forbids braced-groups within expressions [-Wpedantic]
但我需要的代码是可移植的,不仅为gcc。
1条答案
按热度按时间zpqajqem1#
您可以使用comma operator,它允许将多个表达式组合成一个表达式。这比GCC语句表达式(可能包含变量声明,
for
,while
,switch
等)更具限制性,但如果operation1
和operation2
以及其余的 * 表达式 *,则逗号运算符有效。如果这不起作用,您可以定义一个函数。