9

次の行を使用して、整数を文字に変換してファイルに書き込もうとしています。

fputc(itoa(size, tempBuffer, 10), saveFile);

そして私はこの警告とメッセージを受け取ります:

警告:「itoa」の暗黙の宣言

'_itoa'への未定義の参照

私はすでにstdlib.hを含めており、コンパイルしています:

gcc -Wall -pedantic -ansi

どんな助けでもありがたいです、ありがとう。

4

2 に答える 2

22

itoa標準の一部ではありません。-ansi使用できなくなっているか、まったく利用できないのではないかと思います。

使用することをお勧めしますsprintf()

c99標準を使用する場合snprintf()は、もちろんより安全なものを使用できます。

char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
于 2011-03-25T04:48:38.777 に答える
2

これは、コンパイルフェーズ中itoaは不明であることを示しています。

警告:「itoa」の暗黙の宣言

したがって、この関数がシステムに存在する場合、それを宣言するヘッダーファイルがありません。次に、コンパイラーは、それが不特定の数の引数を取り、を返す関数であると想定しますint

ローダーフェーズからのこのメッセージ

'_itoa'への未定義の参照

また、ローダーは、彼が知っているどのライブラリにもそのような関数を見つけられないと説明しています。

したがって、おそらくブライアンのアドバイスに従ってitoa、標準関数に置き換える必要があります。

于 2011-03-25T07:32:02.277 に答える