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