簡體   English   中英

沒有價值的回報

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM