Oracle Solaris Studio 12.2: C ユーザーガイド

D.1.6 暗黙の int および暗黙の関数宣言の禁止

6.5.2.2 関数呼び出し

暗黙の宣言は、1990 C 規格の場合とは異なり、1999 C 規格では許可されなくなりました。以前のバージョンの C コンパイラでは、-v (冗長形式) を指定した場合にだけ、暗黙の定義についての警告メッセージが生成されていました。暗黙の定義についてのこれらのメッセージおよび新しい警告は、識別子が暗黙に int または関数として宣言されている場合は常に生成されます。

多数の警告メッセージが生成されることがあるため、この変更はたいていの場合はすぐにわかります。よくある原因としては、たとえば、printf では <stdio.h> をインクルードする必要があるように、使用する関数を宣言する適切なシステムヘッダーファイルをインクルードしていないことが考えられます。1990 C 規格に従って暗黙の宣言を許可するには、-xc99=none を指定します。

C コンパイラは、暗黙の関数宣言に対して警告を生成するようになりました。


example% cat test.c
void main()
{
  printf("Hello, world!\n");
}
example% cc test.c
"test.c", line 3: warning: implicit function declaration: printf
example%