我可以使用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/

10-12 06:11