C++ strcpy_不与gcc合作
我有一个C++11项目,我添加了一些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
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的,它也不是。