我可以使用gcc版本4.7.2编译以下内容
#include <string.h>
int main(){
char text[] = "String duplicate";
char* dup = strdup(text);
return 0;
}
但是,当我使用--std = c11标志时,会收到以下警告:
warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration]
warning: initialization makes pointer from integer without a cast [enabled by default]
是什么引起了此警告?
最佳答案
阅读以下内容的手册:strdup
man strdup
你会发现
它表示 strdup 符合SVr4、4.3BSD,POSIX.1-2001。
这样您就可以摆脱警告
gcc -D_BSD_SOURCE -std=c11 <your source file>
我猜这些警告是由于c11没有启用上述宏之一引起的。
关于c - 在C11中使用strdup,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19641460/