strcpy_s 不使用 gcc
strcpy_s not working with gcc
我有一个 C++11 项目,我添加了一些 strcpy_s
方法调用。
这适用于 windows,但在 gcc 上编译时,出现错误
说明未找到 strcpy_s
符号。
我确实添加了行
#define __STDC_WANT_LIB_EXT1__ 1
给代码,没用。
GCC(或者更确切地说,glibc)不支持 strcpy_s()
和朋友。有关在哪里可以找到支持它们的库的一些想法,请参见此处:Are there any free implementations of strcpy_s and/or 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
您可以使用 strncpy
。小心一些,它可以是安全的。
我有一个 C++11 项目,我添加了一些 strcpy_s
方法调用。
这适用于 windows,但在 gcc 上编译时,出现错误
说明未找到 strcpy_s
符号。
我确实添加了行
#define __STDC_WANT_LIB_EXT1__ 1
给代码,没用。
GCC(或者更确切地说,glibc)不支持 strcpy_s()
和朋友。有关在哪里可以找到支持它们的库的一些想法,请参见此处:Are there any free implementations of strcpy_s and/or 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
您可以使用 strncpy
。小心一些,它可以是安全的。