【发布时间】:2011-11-26 19:10:17
【问题描述】:
当我在 Microsoft Visual C++ 中使用 strdup 时,它会警告我:
警告 C4996:“strdup”:不推荐使用此项目的 POSIX 名称。而是使用符合 ISO C++ 的名称:_strdup。有关详细信息,请参阅在线帮助。
因此看来_strdup 是正确的。
但是当我在 GCC (Fedora Linux OS) 中使用_strdup 时,编译器显示错误:
错误:“_strdup”未在此范围内声明
使用 GCC 和 Linux,编译器不会显示 strdup 的任何错误。
哪个是正确的 - strdup 或 _strdup?
注意:我的代码中包含<string.h>。
【问题讨论】:
-
在 C++ 中,考虑使用
std::string而不是 C 样式的字符串,然后问题就消失了。此外,在 C++ 中,标头只是<cstring>。 -
@Rowland Shaw:我的意思是 GCC 显示
_strdup的错误,但没有显示strdup的任何错误。我的测试平台是 Fedora Linux。 -
请注意,在 Visual Studio 2013 及更高版本中,这些警告现在是错误。
标签: c++ c visual-studio strdup