在以下程序中,为什么编译器不会给出任何错误或警告?返回语句中的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