0

我有一个 C 程序如下:

#include<stdio.h>

void main()
{
 printf("Hello");

}

文件名是linkedlist.c

和makefile在同一目录下如下

build: linkedlist.c
       gcc -Wall -g -pedantic linkedlist.c -o linkedlist
run:
     ./linkedlist

我首先做 Mx compile 然后 make build 然后是 Mx compile ->make run 输出如下:

-*- mode: compilation; default-directory: "/home/amey/test/" -*-
Compilation started at Sat Sep 22 16:59:13

make run
./linkedlist
Hello make: *** [run] Error 5

Compilation exited abnormally with code 2 at Sat Sep 22 16:59:13

以 ./ 运行时生成的文件没有错误。有人可以解释发生了什么吗?

4

1 回答 1

4

由于您的 main 没有返回值或调用退出,因此您将获得一个随机返回码......在这种情况下,5(这并非完全巧合,是“Hello”的长度和 printf 返回的值) . 由于它不是 0,因此 make 将其解释为错误。

要在托管环境中成为符合标准的 C 程序,您的 main 必须被声明int,并且函数的结尾几乎不会到达(没有 return 语句)。返回值的解释取决于实现,但通常 0 被认为是成功,非 0 被认为是错误。

于 2012-09-22T23:06:30.133 回答