在以下程序中,爲什麼編譯器不會給出任何錯誤或警告?返回語句中的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平臺。
在以下程序中,爲什麼編譯器不會給出任何錯誤或警告?返回語句中的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平臺。
當然,您可以在void
函數中使用return;
。你還會如何從這樣一個功能早期返回?
在你的情況下,語句是冗餘的,因爲它是在所有控制路徑上達到的,但編譯器肯定不會在該實例中發出診斷。
(請注意,您必須return
明確地從非void
功能,與main()
的例外,如果缺少一個編譯器必須生成return 0;
。
void函數將執行的任務,然後控制返回給調用者,但是,它不會返回一個值。沒有返回任何值。
沒有return語句,控制將返回給調用者在反正函數的結束。
因爲它完全合法嗎?你可以查看它。 – DeiDei
因爲從'void'函數返回是完全正確的。你期望什麼錯誤/警告? –
請不要以顯而易見的理由落後,因爲這是主觀的。 OP已經用一段代碼仔細地寫了這個問題。 – Bathsheba