您需要返回兩條信息 - 數字以及該數字是否有效的指示。一種方法是更改函數的簽名以指示它是否返回任何內容,如果是,則將該值保存在變量中。這裏是你如何能做到這一點的例子:
// This function returns 1 or 0.
// 1 indicates success; 0 indicates failure
// If your compiler is up to C99 standard, use "bool" instead of "int" below
int getTime(struct * theInfo, int *result) {
if(theInfo != NULL){
*result = theInfo->waitTime;
return 1;
} else{
// result stays unchanged
return 0;
}
}
現在你可以使用類似這樣的新功能:
int res;
if (getTime(&myInfo, &res)) {
printf("getTime returned %d\n", res);
} else {
printf("getTime Patron is nonexistent\n");
}
一種不太普遍的替代,可以使用,當你不需要返回全系列的數字。例如,如果函數返回的有效時間總是正數,則可以採用使用負數的慣例來表示出現錯誤。這種方法也是有效的,但它更多地依賴於一個約定,所以你的代碼的讀者需要查看你的函數文檔來看看發生了什麼。
由於它是關於時間。我想你可以安全地返回-1並檢查它。假設waitTime總是正面的。 – 2013-04-01 15:39:49
@stardust_我無法修改提供給我的'struct * theInfo',我無法更改它。 – user2225940
你不需要。你必須改變getTime。只要把返回-1。然後當你打電話,並返回getTime檢查-1 – 2013-04-01 15:44:47