2012-12-27 25 views
2

C99을 사용하여 C 라이브러리를 컴파일 중입니다. 나는 나의 번역 단위에 string.h를 포함하고있다 (그리고 나는 STR의 정의를 탐색 할 수 있습니다 casecmp 기능을 내 넷빈즈 IDE에함수의 암시 적 선언 'str [n] casecmp'[-Werror = 암시 적 함수 선언]

소스는 다음과 같이 보입니다 :?. 그러나,

#include <string.h> 

int foo(char* c1, char* c2){ 
    return strcasecmp(c1,c2); 
} 


int foobar(char* c1, char* c2, int n){ 
    return strncasecmp(c1,c2,n); 
} 

을 나는 제목에 표시되는 오류, 컴파일을 시도

내가 GCC 버전 4.6.3 (우분투/리나 4.6.3-1ubuntu5)를 사용하고

이 내 GCC 명령 모습입니다.. :

gcc -c -g -Werror -DE4C_THREADSAFE -DLINUX_BUILD -I../include -I../genutils -std=c99 -fPIC -MMD -MP -MF build/Debug/GNU-Linux-x86/btypes.o.d -o build/Debug/GNU-Linux-x86/btypes.o btypes.c 

이 문제의 원인은 무엇이며 어떻게 수정합니까?

+0

전체 오류도 포함하는 것이 어떻습니까? –

답변

7

이 함수는 이 아니라 strings.h으로 선언되어 있습니다.

+0

이상한 점은 내 시스템 (Ubuntu 12.0.4)에서'/ usr/include/string.h '에 선언되어 있습니다. –

+0

하지만'#ifdef __USE_BSD' 매크로에 숨겨져 있습니다. man 페이지는 하나는'strings.h'를 포함해야한다고 말했습니다. –

+0

예, 고마워요. 나는 그들이 사실상 #def'ed (내가 정말로 확인 했어야 할 첫번째 것)라는 것을 발견했습니다. 그러나, 이것에 따르면 : http://stackoverflow.com/questions/4291149/difference-between-string-h-and-strings-h, strings.h는 크게 반대됩니다 (당신이 말하는 것과는 반대입니다) - 당신은 정교 할 수 있습니까? . –

1

은 string.h 대신 헤더 strings.h를 포함합니다 ..

관련 문제