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コンパイルを実行し、次にビルドを作成し、次にMxコンパイル->実行を実行します。これにより次のような出力が得られます。

-*- 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が値を返さないか、exitを呼び出さないため、ランダムな戻りコードが返されます...この場合は5です(これは、完全に偶然ではありませんが、「Hello」の長さとprintfによって返される値になります) 。0ではないため、makeはエラーとして解釈します。

ホストされた環境で準拠するCプログラムであるためには、mainを宣言する必要がintあり、関数の終わりに到達することはほとんどありません(returnステートメントなしで)。戻り値の解釈は実装次第ですが、通常、0は成功と見なされ、0以外はエラーと見なされます。

于 2012-09-22T23:06:30.133 に答える