如果我有一个int函数,return;
int f(int val, int *hasResult) {
if (val) {
*hasResult = 0;
return;
}
*hasResult = 1;
return 2;
}
并将其用作
int hasResult;
int unwrapped = f(val, &hasResult);
if (hasResult) {
printf("%d", unwrapped);
}
这是有效的C89吗?我知道它不是有效的C99 +,但我可以在C89中完全按照这样做吗?如果没有,我将如何做到这一点?
(f
没有副作用)
答案 0 :(得分:0)
在C89 draft paragraph 3.6.6.4我们发现:
如果执行了没有表达式的return语句,并且调用者使用了函数调用的值,行为未定义。到达终止函数的}等同于执行不带表达式的return语句。
总之,要避免,是否“合法”。