strcpy_s не работает с gcc

У меня есть проект C ++ 11, и я добавил несколько strcpy_s вызовы методов.
Это работает на Windows, но при компиляции на GCC, есть ошибка
основываясь на этом strcpy_s Символ не найден.

Я добавил строку

#define __STDC_WANT_LIB_EXT1__ 1

к коду, безрезультатно.

8

Решение

GCC (точнее, glibc) не поддерживает strcpy_s() и друзья. Некоторые идеи о том, где вы можете найти библиотеку, которая поддерживает их, смотрите здесь: Существуют ли бесплатные реализации strcpy_s и / или TR24731-1?

9

Другие решения

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. С некоторой осторожностью это может быть безопасно.

5

По вопросам рекламы [email protected]