strcpy_s无法使用gcc

时间:2016-10-14 14:44:24

标签: c++ c++11 gcc strcpy tr24731

我有一个C ++ 11项目,我添加了一些strcpy_s方法调用。 这适用于Windows,但在gcc上编译时,会出现错误 说明找不到strcpy_s符号。

我确实添加了一行

#define __STDC_WANT_LIB_EXT1__ 1

代码,无济于事。

2 个答案:

答案 0 :(得分:9)

GCC(或更确切地说,glibc)不支持strcpy_s()和朋友。有关您可以在哪里找到支持它们的库的一些想法,请参见此处:Are there any free implementations of strcpy_s and/or TR24731-1?

答案 1 :(得分:6)

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。小心点,它可以是安全的。