2017-06-30 10 views
-1

次のプログラムでは、なぜコンパイラはエラーや警告を出さないのですか?ここC言語のvoid関数のreturn文

cc -Wall -pedantic my_program.c 

コード:私はのLinuxプラットフォーム上でGCCコンパイラでプログラムをコンパイルしている

#include <stdio.h> 

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

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

+3

それは完全に合法だから?あなたはそれを見ていた可能性があります。 – DeiDei

+1

'void'関数から' return'するのはまったく問題ないからです。どのようなエラー/警告がありますか? –

+2

自明なので、自明の理由でダウンボトムをしないでください。 OPはこの疑問をコードスニペットで丁寧に書いています。 – Bathsheba

答えて

7

もちろん、void機能でreturn;を使用することができます。あなたはそのような機能から他にどのように早く復帰しますか?

すべてのコントロールパスでステートメントが冗長ですが、コンパイラはそのインスタンスで診断を発行しません。

(あなたreturn明示的に非void機能から、不足している場合、コンパイラはreturn 0;を生成する必要がありますmain()を除いて、必要があります。

1

void関数は、その後、制御タスクを実行する、とすることに注意してくださいそれは値を返すことはないだろう、呼び出し元に返しますが。戻るには任意の値がありません。

は、return文がない場合、制御はとにかく関数の最後に、呼び出し元に戻ります。

関連する問題