[英]Return with no value
如果我有一個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
沒有副作用)
在C89草案第3.6.6.4段中,我們發現:
如果執行了不帶表達式的return語句,並且調用者使用了函數調用的值,則該行為是undefined 。 到達終止函數的}等效於執行不帶表達式的return語句。
簡而言之,無論是否“合法”,都應避免。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.