【问题标题】:return statement in void function in CC中void函数中的return语句
【发布时间】:2017-12-04 06:53:34
【问题描述】:

在下面的程序中,为什么编译器没有给出任何错误或警告?

cc -Wall -pedantic my_program.c

代码在这里:

#include <stdio.h>

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

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

我已经在Linux平台的GCC编译器中编译了程序。

【问题讨论】:

  • 因为它完全合法?你可以查一下。
  • 因为从 void 函数到 return 完全没问题。您预计会出现什么错误/警告?
  • 请不要以显而易见的理由投反对票,因为这是主观的。 OP仔细写了这个问题,代码sn-p。
  • @Bathsheba 以同样的方式,他可以问为什么int a = 22 / 7; 不会产生警告。
  • 你应该读一本 C 书。

标签: c function return void


【解决方案1】:

当然,您可以在void 函数中使用return;。否则你会如何从这样的函数中提前返回?

在您的情况下,该语句是多余的,因为它在所有控制路径上都已到达,但编译器肯定不会在该实例中发出诊断。

(请注意,您必须从非void 函数显式地使用return,但main() 除外,如果缺少return 0;,编译器必须生成该函数。

【讨论】:

    【解决方案2】:

    一个 void 函数将执行任务,然后控制权返回给调用者,但它不会返回值。没有任何价值可以返回。

    如果没有 return 语句,控制权将在函数结束时返回给调用者。

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 2019-06-08
      • 2015-09-21
      • 2020-01-18
      • 2012-12-09
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      相关资源
      最近更新 更多