C/C++で「incompatible implicit declaration of built-in function」という警告の対処

C/C++で「incompatible implicit declaration of built-in function」という警告の対処

Posted at November 29,2016 1:11 AM
Tag:[C/C++]
  • Hatena ブックマーク
  • del.icio.us
  • livedoor
  • Google Bookmarks
  • Yahoo!ブックマーク
  • POOKMARK Airlines
  • ニフティクリップ
  • Buzzurl
  • newsing it!

C/C++で「incompatible implicit declaration of built-in function」という警告の対処について紹介します。

1.問題点

次のプログラム(sample.c)を書きました。

int main(void) {
    int c = 100;
    printf("%d\n", c);
    return 0;
}

このプログラムをコンパイルしたところ、次の警告が表示されました。

[foo@hoge ~]$ gcc -o sample.c                                                                    
sample.c: In function 'main':
sample.c:3: 警告: incompatible implicit declaration of built-in function 'printf'

警告は「ビルトイン関数strcpyの互換性のない暗黙の宣言」という意味になります。

ネットで調べたとところ、「事前に宣言されていない関数を使用すると、(コンパイラで)関数の暗黙の宣言が行われる。ただし暗黙の宣言が組み込みの関数と互換性がない場合、警告が表示される」ということらしいです。

2.原因

原因は、printf()を使っていてstdio.hをインクルードしていないためです。

その他、strcpy()を使っていてstring.hをインクルードしていない場合など、同様の警告が発生します。

3.対処

下記の1行を追加すれば解消します。

#include <stdio.h>

4.参考サイト

参考サイトは下記です。ありがとうございました。

関連記事
トラックバックURL


コメントする
コメントするにはまずサインインしてください。
Loading...