web-dev-qa-db-ja.com

警告:戻り値の型のデフォルトは「int」です[-Wreturn-type]

私はCを学び始めたLinuxユーザーで、入力したこのソースをコンパイルしようとしています。

#include <stdio.h>
main()
{
        float c,d;
        c = 10215.3;
        d = c / 3;
        printf("%3.2f\n",d);
        return 0;
}

それは私が書いたメイクファイルを使ってこれでコンパイルされました:

cc -Wall -g     printf.c   -o printf

しかし、私はこの警告を受けています:

printf.c:2:1:警告:戻り値の型のデフォルトは ‘int’ [-Wreturn-type]

それはコードをコンパイルし、私は望ましい出力を得ますが、これが何を意味するのかを理解したいです

20
JoshD
main()

する必要があります

int main()

C89では、デフォルトの戻り値の型はintであると想定されているため、機能します。

20
Luchian Grigore

C89では、デフォルトの戻り値の型はintです。このデフォルトはC99で削除され、コンパイラはmain()の前にintがないCスタイルが古くなっていることを思い出させるのに役立ちます。

C89仕様のセクション3.5.2「タイプ指定子」を参照してください。

  • "型指定子の各リストは、次のセットのいずれかである必要があります:[...] + intsignedsigned intまたはタイプ指定子なし "。

  • また、セマンティクスの2番目の段落では、「ビットフィールド[blabla]の場合を除いて、[[...]セットのそれぞれが同じタイプを指定している」としています。つまり、「型指定子なし」はintと同じです。

C99では、「型指定子がない」という部分は削除されています。 (しかし、intの部分がなくてもsignedと書くことができます。)

0
Marcel Beemster