2012-02-16 129 views
3

關於SO的大多數問題都指的是非無效的返回類型,但我們正在進行一場關於這個問題的火焰戰爭,並且想要了解社區的想法。返回類型爲void的函數末尾是否爲空白返回語句?

void DoSomething() 
{ 
    return; // Is this needed? 
} 

this討論,它看起來像有非空返回類型的函數未定義行爲涉及的問題。 void返回類型是否具有相同的未定義行爲,還是僅在非void返回函數中?

我擔心的是,這隻會成爲一種可怕的編碼風格,而不是任何理由。但是,如果它對於void返回函數也是未定義的行爲,那麼我可以看到需要將它添加到編碼標準中。如果C vs C++的答案不同,這也可以。

§6.6.3 return語句

2無表達式的return語句可以在 函數只使用不帶空隙的 返回類型返回一個值,即,一個功能,聯合體(12.1)或析構體(12.4)。

§6.6.3/2

流動關閉的功能的端部是 相當於沒有值的返回; 這導致未定義的行爲在 一個值返回函數。

+3

您使用該標準參考回答了您自己的問題:) – Lundin 2012-02-16 18:32:21

回答

16

不;這是不需要的。

如果您想提前返回並跳過該函數的其餘部分,則只需編寫return;

2

你是對的,return;從來沒有需要在一個功能,它不會早早脫離。

-2

返回是明確的。它表示,作者清楚地理解沒有價值可以歸還。

順便說一句 - 應該只有一個返回允許,但那是另一個討論(所以不要在這裏回答!!)。

另外,從代碼維護的角度來看,「return」;「提供了一個方便的位置來添加一個值,如果該函數從void改變的話。

將其留在!目標不是看誰能用最少的線條編寫函數。