当我使用strdup
在 Microsoft Visual C++ 中,它警告我:
警告 C4996:“strdup”:此项目的 POSIX 名称已弃用。相反,请使用 ISO C++ 一致名称:_strdup。详情请参见在线帮助。
如此看来_strdup
是正确的。
但是当我使用_strdup
在GCC(Fedora Linux操作系统)中,编译器显示错误:
错误:“_strdup”未在此范围内声明
对于 GCC 和 Linux,编译器不会显示任何错误strdup
.
哪个是对的 -strdup
or _strdup
?
注:我包括<string.h>
在我的代码中。
哪个是对的?
strdup
是一个完全正确的 POSIX 函数。然而,它不属于该标准,并且 ANSI C 标准保留了一些(广泛的)函数名称类别以供进一步使用。其中,有
因此,MS人员决定更换strdup
with _strdup
.
我只是继续使用strdup
。 C委员会不太可能定义strdup
到 POSIX 之外的其他东西。任何一个#define strdup _strdup
或使警告静音。
顺便说一句,我希望您看到这适用于您的函数,其名称如下string_list
等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)