24

我运行以下 C 代码并收到警告:控制到达非无效函数的结尾

int main(void) {}

有什么建议么?

4

3 回答 3

21

只需放入return 0您的main(). 您的函数 main 返回一个 int ( int main(void)) 因此您应该在它的末尾添加一个 return 。

控制到达非空函数的末尾

Problem: I received the following warning:

警告:控制到达非无效函数的结尾

解决方案:此警告类似于 Return with no value 中描述的警告。如果控制到达函数的末尾并且没有遇到返回,则 GCC 假定返回没有返回值。但是,为此,该函数需要一个返回值。在函数的末尾,添加一个 return 语句,该语句返回一个合适的返回值,即使控制永远不会到达那里。

来源

解决方案

int main(void)
{
    my_strcpy(strB, strA);
    puts(strB);
    return 0;
}
于 2012-11-19T23:28:32.490 回答
13

作为向 中添加return语句的明显解决方案的替代方案main(),您可以使用 C99 编译器(“gcc -std=c99”,如果您使用的是 GCC)。

main()在 C99 中,没有语句是合法的return,然后 final}隐式返回 0。

$ gcc -c -Wall t.c
t.c: In function ‘main’:
t.c:20: warning: control reaches end of non-void function
$ gcc -c -Wall -std=c99 t.c
$ 

纯粹主义者认为重要的注意事项:您不应该通过声明main()为返回类型来修复警告void

于 2012-11-19T23:32:35.243 回答
3

主函数的返回类型为 int,如

int main(void)

但是您的 main 函数不返回任何内容,它会在之后关闭

puts(strB);

添加

return 0;

之后,它将起作用。

于 2012-11-19T23:28:31.383 回答