2012-01-23 3 views
2

에 ltoa으로 코드를 컴파일 할 때 나는 컴파일 오류는 다음과 같이 얻을던지기 오류 리눅스

#include <stdlib.h> 

main() 
{ 
    int val = 10; 
    char buff[10]; 
    char *ptr; 
    ptr = ltoa(val,buff,10); 
    printf("The val is %s\n",buff); 
} 

아래와 같이 내가 코드를 컴파일하려고 할 때 나는 컴파일 오류가 점점 오전 :

[[email protected] ~]$ cc -g samp2.c 
samp2.c: In function `main': 
samp2.c:8: warning: assignment makes pointer from integer without a cast 
samp2.c:11:2: warning: no newline at end of file 
/tmp/ccifnKFx.o(.text+0x23): In function `main': 
/home/mcanj/samp2.c:8: undefined reference to `ltoa' 
collect2: ld returned 1 exit status. 

이 문제를 해결하는 방법을 알려주세요. 고마워, 안부.

+2

대신 실제로 sprintf를 사용해야합니다. –

+0

http://stackoverflow.com/questions/190229/where-is-the-itoa-function-in-linux –

답변

2

itoa 아니요, ltoa이 아닙니다. 그냥 전화를 변경하면 괜찮을거야.

+1

맞음. 컴파일러 경고가 오해의 소지가 있습니다. 'ltoa'가 무엇인지 모릅니다. 따라서 정수를 반환한다고 가정합니다. 이것은'ltoa'가'int'를 반환한다고 가정하도록 유도 할 수 있습니다. 실제 오류는 링커에서 사용 가능한 코드에서 'ltoa'함수를 찾을 수 없다고 설명합니다. – Anthony

+1

리눅스에서'itoa'가'stdlib.h '에있을 가능성은 희박합니다. –

3

itoa()이고 ltoa()이 아니지만 itoa()도 표준 라이브러리 기능이 아닙니다.
프로그램을 휴대 가능하게 만들려면 C99에 sprintf() 또는 snprintf()을 사용하십시오.

1

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

참조 http://www.strudel.org.uk/itoa/

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

Arrgghh C/C++! itoa()는 ANSI C 표준이 아니며 Linux에서 GCC와 함께 을 사용하지 않는 것으로 보입니다 (적어도 사용하고있는 버전). 이와 같은 상황은 특히 코드가 다른 플랫폼 (Windows/Linux/Solaris/뭐든)에서 작동하도록하려는 경우 실망 스럽습니다.

+1

실망한 것은 깨끗한 보편적 휴대용 대안이있을 때'itoa'와 같은 가짜 휴대용이 아닌 것들을 가르치는 나쁜 Windows 지향 도서 및 튜토리얼과 예제입니다. –

+0

하하하하 ............ LOL .. 너 맞아 ...... –

1

C는 itoa 또는 ltoa 함수를 가지지 않으므로 C는 atoi 문자열을 가리키는 문자열을 int 표현으로 변환합니다.

사용하려면이 기능을 구현해야합니다.

관련 문제