Strcpy_s不能与gcc一起工作

strcpy_s not working with gcc

本文关键字:gcc 一起 工作 不能 Strcpy      更新时间:2023-10-16

我有一个c++ 11项目,我添加了一些strcpy_s方法调用。这在windows上工作,但在gcc上编译时,会出现错误说明没有找到strcpy_s符号。

我确实添加了

这行

#define __STDC_WANT_LIB_EXT1__ 1

GCC(或者更确切地说,glibc)不支持strcpy_s()及其同类。有关在哪里可以找到支持它们的库的一些想法,请参阅这里:是否有strcpy_s和/或TR24731-1的免费实现?

strcpy_s和friends还不是c++的一部分。c++ 17似乎会有这些特性,但目前是否提供这些特性取决于实现。看来glibc没有。

实际上,根据cppreference,只有定义了__STDC_LIB_EXT1__, __STDC_WANT_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。只要小心一点,它是安全的。