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
を使用できます。少し注意すれば安全です。