1. ホーム
  2. c

[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?

2022-01-19 05:05:27

質問

以下のコードを使用しています。

char dest[5];
char src[5] = "test";

printf("String: %s\n", do_something(dest, src));

char *do_something(char *dest, const char *src)
{
    return dest;
}

の実装は do_something はここでは重要ではありません。 上記をコンパイルしようとすると、以下の2つの例外が発生します。

error: 'do_something' の型が競合している (printf 呼び出し時)
error: 'do_something' の前の暗黙の宣言がここにあった (プロトタイプ行)

なぜ?

解決方法は?

あなたはdo_somethingを宣言する前に呼び出そうとしています。 printf行の前に関数プロトタイプを追加する必要があります。

char* do_something(char*, const char*);

あるいは、関数定義をprintf行の上に移動する必要があります。 宣言される前に関数を使うことはできません。