C++ strcpy_不与gcc合作

C++ strcpy_不与gcc合作,c++,c++11,gcc,strcpy,tr24731,C++,C++11,Gcc,Strcpy,Tr24731,我有一个C++11项目,我添加了一些strcpy\u方法调用。 这在windows上有效,但在gcc上编译时出现错误 说明未找到strcpy\s符号 我确实加了一行 \define\u STDC\u WANT\u LIB\u EXT1\u1 对代码无效。GCC(或者更确切地说,glibc)不支持strcpy\u s()和friends。对于一些可以找到支持它们的库的一些想法,请参阅:< P>代码> Strucys和朋友们还不是C++的一部分。似乎会有它们,但到目前为止,提供它们取决于实现。看来g

我有一个C++11项目,我添加了一些
strcpy\u
方法调用。 这在windows上有效,但在gcc上编译时出现错误 说明未找到
strcpy\s
符号

我确实加了一行

\define\u STDC\u WANT\u LIB\u EXT1\u1


对代码无效。

GCC(或者更确切地说,glibc)不支持
strcpy\u s()
和friends。对于一些可以找到支持它们的库的一些想法,请参阅:

< P>代码> Strucys和朋友们还不是C++的一部分。似乎会有它们,但到目前为止,提供它们取决于实现。看来glibc没有

事实上,根据\uuuuuuustdc\uwant\u LIB\u EXT1\uuuuu的定义,只有在定义了
\uuuuuuustdc\u LIB\u EXT1\uuuu
的情况下,
\uuuuuuuu STDC\u EXT1\uuuuuuuuuuu>才会起作用。在我的ArchLinux上,它不是

#ifdef __STDC_LIB_EXT1__
constexpr bool can_have_strcpy_s = true;
#else
constexpr bool can_have_strcpy_s = false;
#endif

你可以用。小心一点,它是安全的。

您是否查阅了该函数以了解它是什么,以及在哪里支持它?在我看来,这是一个基于快速谷歌搜索的C11功能,而C++11/C++14是基于C99的。有点类似:约翰,可能是重复的谢谢。我最终自己实现了它。Re:“为什么不使用strncpy?”--嗯,因为它不起作用?是的,你可以让它工作,但它不是设计用来“安全”替代strcpy的,它也不是。