Ошибка C: неопределенная ссылка на _itoa - PullRequest
9 голосов
/ 25 марта 2011

Я пытаюсь преобразовать целое число в символ для записи в файл, используя следующую строку:

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

и я получаю это предупреждение и сообщение:

предупреждение: неявное объявление 'itoa'

неопределенная ссылка на '_itoa'

Я уже включил stdlib.h и собираю с:

gcc -Wall -pedantic -ansi

Буду признателен за любую помощь, спасибо.

Ответы [ 2 ]

22 голосов
/ 25 марта 2011

itoa не является частью стандарта.Я подозреваю, что либо -ansi мешает вам использовать его, либо он вообще не доступен.

Я бы предложил использовать sprintf()

Если вы используете стандарт c99, вы можете использоватьsnprintf() что, конечно, безопаснее.

char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
2 голосов
/ 25 марта 2011

Это говорит о том, что на этапе компиляции itoa неизвестно:

предупреждение: неявное объявление 'Itoa'

поэтому, если эта функция присутствует в вашей системе, вам не хватает заголовочного файла, который ее объявляет. Затем компилятор предполагает, что это функция, которая принимает неопределенное количество аргументов и возвращает int.

Это сообщение из фазы загрузчика

неопределенная ссылка на '_itoa'

объясняет, что загрузчик не находит такой функции ни в одной из известных ему библиотек.

Так что, возможно, вам следует следовать совету Брайана, чтобы заменить itoa стандартной функцией.

...