我可以使用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]是什么改变导致了这个警告?
发布于 2013-10-28 17:54:36
阅读增强手册
man strdup你可以找到
glibc的特性测试宏要求(请参阅feature_test_macros(7)): strdup():自glibc 2.12:*/ _POSIX_C_SOURCE >= 200809L起:*/_POSIX_C_SOURCE >= 200809L,自glibc 2.12:*/_POSIX_C_SOURCE>=200809L以来:*/_POSIX_C_SOURCE>=200809L
这表明增强符合SVr4,4.3BSD,POSIX.1-2001。
这样你就可以通过
gcc -D_BSD_SOURCE -std=c11 <your source file>我猜这些警告是由c11不启用上述宏之一引起的。
发布于 2013-12-01 22:43:46
您需要-std=gnu11 11或--std=c11 -D_GNU_SOURCE
https://stackoverflow.com/questions/19641460
复制相似问题