У меня есть проект C ++ 11, и я добавил несколько strcpy_s
вызовы методов.
Это работает на Windows, но при компиляции на GCC, есть ошибка
основываясь на этом strcpy_s
Символ не найден.
Я добавил строку
#define __STDC_WANT_LIB_EXT1__ 1
к коду, безрезультатно.
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
Ты можешь использовать strncpy
. С некоторой осторожностью это может быть безопасно.