我剛從草莓Perl獲得的Windows版g ++中發現了一些奇怪的行爲。它允許我省略返回聲明。在C++中省略return語句
我有一個返回一個包含兩個指針的結構的成員函數,稱爲boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
這個功能給了我一些不好的輸出,我發現它沒有return語句。我本來打算返回retBoundTag
,但忘了實際寫回報聲明。一旦我加入return retBoundTag;
一切都很好。
但我已經測試過這個功能,並從中得到了正確的boundTag
輸出。即使是現在,當我刪除return語句時,g ++也會在沒有警告的情況下編譯它。 WTF?它猜測返回retBoundTag
?
您應該使用'-Wall'進行編譯。缺少返回語句被'-Wreturn-type'捕獲。 – jweyrich 2010-08-04 02:38:50
我傾向於將關於缺少返回的警告轉換爲錯誤:'-Werror = return-type'。爲我節省了很多時間。 – 2016-07-12 17:08:51