首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强技术在C11中的应用

增强技术在C11中的应用
EN

Stack Overflow用户
提问于 2013-10-28 17:39:09
回答 2查看 5.4K关注 0票数 13

我可以使用gcc版本4.7.2编译以下内容

代码语言:javascript
复制
   #include <string.h>

   int main(){
    char text[] = "String duplicate";
    char* dup = strdup(text);
    return 0;

   }

但是,当我使用--std=c11标志时,我会收到以下警告:

代码语言:javascript
复制
warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration]
warning: initialization makes pointer from integer without a cast [enabled by default]

是什么改变导致了这个警告?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-28 17:54:36

阅读增强手册

代码语言:javascript
复制
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。

这样你就可以通过

代码语言:javascript
复制
gcc -D_BSD_SOURCE -std=c11 <your source file>

我猜这些警告是由c11不启用上述宏之一引起的。

票数 9
EN

Stack Overflow用户

发布于 2013-12-01 22:43:46

您需要-std=gnu11 11或--std=c11 -D_GNU_SOURCE

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19641460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档