函数的隐式声明‘;str[n]casecmp’;[-Werror=隐式函数声明]

函数的隐式声明‘;str[n]casecmp’;[-Werror=隐式函数声明],c,gcc,c99,C,Gcc,C99,我正在编译一个C库,使用C99。我将string.h包含到我的翻译单元中(并且我可以导航到netbeans IDE中str?casecmp函数的定义) 源代码如下所示: #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); } 是什

我正在编译一个C库,使用C99。我将string.h包含到我的翻译单元中(并且我可以导航到netbeans IDE中str?casecmp函数的定义)

源代码如下所示:

#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);
}

是什么导致了这种情况,我该如何修复它?

这些函数是在
strings.h
中声明的,而不是
string.h
包含头字符串.h而不是string.h..

如何也包含完整的错误?这很奇怪……它们是在我的系统(Ubuntu 12.0.4)的
/usr/include/string.h
中声明的但是它们隐藏在
#ifdef_uuse_BSD
宏下。手册页说应该包含
字符串。h
是的,谢谢,我刚刚发现它们现在已经被定义了(我真的应该检查的第一件事)。但是,根据这一点:,strings.h基本上被弃用(与你说的相反)-你能详细说明一下吗?我不太确定。POSIX和手册页都明确建议使用
字符串.h
。所以我现在就坚持使用它们。另外,你也可以看看下面的讨论:
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