web-dev-qa-db-ja.com

Cエラー:「_ itoa」への未定義の参照

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

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

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

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

'_itoa'への未定義の参照

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

gcc -Wall -pedantic -ansi

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

9
aytee17

itoaは標準の一部ではありません。 _-ansi_が原因で使用できないか、まったく使用できないのではないかと思います。

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

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

_char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
_
22
Brian Roach

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

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

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

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

'_itoa'への未定義の参照

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

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

2
Jens Gustedt