2017-06-30 152 views
-1

在以下程序中,爲什麼編譯器不會給出任何錯誤或警告?返回語句中的void函數C

cc -Wall -pedantic my_program.c 

代碼在這裏:

#include <stdio.h> 

void f() 
{ 
     return; // return statement in void function 
} 

int main() 
{ 
     f(); 
     return 0; 
} 

我在GCC編譯器編譯程序上的Linux平臺

+3

因爲它完全合法嗎?你可以查看它。 – DeiDei

+1

因爲從'void'函數返回是完全正確的。你期望什麼錯誤/警告? –

+2

請不要以顯而易見的理由落後,因爲這是主觀的。 OP已經用一段代碼仔細地寫了這個問題。 – Bathsheba

回答

7

當然,您可以在void函數中使用return;。你還會如何從這樣一個功能早期返回?

在你的情況下,語句是冗餘的,因爲它是在所有控制路徑上達到的,但編譯器肯定不會在該實例中發出診斷。

(請注意,您必須return明確地從非void功能,與main()的例外,如果缺少一個編譯器必須生成return 0;

1

void函數將執行的任務,然後控制返回給調用者,但是,它不會返回一個值。沒有返回任何值。

沒有return語句,控制將返回給調用者在反正函數的結束。