首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加强还是_strdup?

加强还是_strdup?
EN

Stack Overflow用户
提问于 2011-09-28 11:17:57
回答 7查看 54K关注 0票数 68

当我在MicrosoftVisualC++中使用strdup时,它会警告我:

警告C4996:‘str举’:这个项目的POSIX名称被废弃了。相反,使用符合C++的名称:_strdup。有关详细信息,请参阅联机帮助。

因此,_strdup似乎是正确的。

但是当我在GCC (Fedora )中使用_strdup时,编译器会显示一个错误:

错误:“_strdup”未在此范围内声明

使用GCC和Linux,编译器不会显示strdup的任何错误。

哪个是正确的- strdup还是_strdup

注意:我在代码中包括了<string.h>

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-09-28 11:28:49

strdup不是一个标准的C++函数。但是它显然是一个Posix函数,不管怎么说,它是一个众所周知的函数,从K&R开始就已经存在了。所以,如果您绝对必须使用它,不要担心任何可能的名称冲突,只需编写strdup以获得最大的可移植性。

票数 34
EN

Stack Overflow用户

发布于 2011-09-28 11:46:23

哪个是对的?

strdup是一个完全正确的POSIX函数。尽管如此,它并不属于标准,ANSI C标准保留了一些(广泛的)函数名称以供进一步使用。其中,有

  • 函数名,以str和小写字母开头。

因此,MS人员决定用_strdup代替_strdup

我只想继续使用strdup。C委员会不太可能将strdup定义为POSIX以外的其他内容。要么#define strdup _strdup,要么沉默警告。

顺便说一句,我希望您看到这也适用于您的函数,比如string_list等。

票数 45
EN

Stack Overflow用户

发布于 2014-06-25 23:34:12

您可以#定义不赞成来禁用此警告。

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

https://stackoverflow.com/questions/7582394

复制
相关文章

相似问题

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