GCC(或者更确切地说,glibc)不支持strcpy_s()和朋友.有关哪里可以找到支持它们的库的一些想法,请参见:strcpy_s和/或TR24731-1是否有任何免费实现?
strcpy_s和朋友们还不是C++的一部分.似乎C++ 17将拥有它们,但是现在提供它们取决于实现.看来glibc没有.
实际上,根据cppreference,__STDC_WANT_LIB_EXT1__只有在__STDC_LIB_EXT1__定义时才会起作用.在我的Arch Linux上它不是.
#ifdef __STDC_LIB_EXT1__
constexpr bool can_have_strcpy_s = true;
#else
constexpr bool can_have_strcpy_s = false;
#endif
Run Code Online (Sandbox Code Playgroud)
你可以用strncpy.小心一点,它可以是安全的.