Ошибка, связывающая стандартный заголовочный файл в gcc

У меня есть простой код - это работает над другими платформами, но не работает в человечности.

#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=99;
char str[100];
itoa(99, str, 10);
return 0;
}

Попытка скомпилировать в использовании терминала в gcc с:

gcc test.c

Но я получаю ошибку:

/tmp/ccJN77g6.o: In function `main':
test.c:(.text+0x35): undefined reference to `itoa'
collect2: ld returned 1 exit status

Как же так? прототип для itoa включен в stdlib.h

0
задан 18 October 2012 в 23:55

3 ответа

itoa не похоже на ANSI C ++ и, следовательно, очень вероятно, что не поддерживается gcc.

Согласно этому источнику , предлагается следующий обходной путь:

This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

A standard-compliant alternative for some cases may be sprintf:

    sprintf(str,"%d",value) converts to decimal base.
    sprintf(str,"%x",value) converts to hexadecimal base.
    sprintf(str,"%o",value) converts to octal base.

sprintf ссылку можно найти здесь .

0
ответ дан 18 October 2012 в 23:55

Я использовал введенный вами код и получаю ту же ошибку. Может показаться, что itoa () не является стандартом ANSI C и не работает с GCC в Linux (по крайней мере, в той версии, которую я использую). Такие вещи разочаровывают, особенно если вы хотите, чтобы ваш код работал на разных платформах (Windows / Linux / Solaris / что угодно).

Это не стандартная функция C. Вот несколько ссылок, которые могут помочь вам найти способ обойти функцию:

link1 Вопрос о переполнении стека

Надеюсь, это поможет. [ 115]

0
ответ дан 18 October 2012 в 23:55

itoa функция не является портативной, нестандартной, и большинство компиляторов Linux не поддерживает его.

Вместо этого необходимо использовать snprintf() функция

Проверьте snprintf ссылку здесь

#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=99;
char str[100];
// itoa(99, str, 10);
snprintf(str,10,"%d", x);
return 0;
}
1
ответ дан 18 October 2012 в 23:55

Другие вопросы по тегам:

Похожие вопросы: