C++11 プロジェクトがあり、いくつかのstrcpy_s
メソッド呼び出しを追加しました。これは Windows では機能しますが、gcc でコンパイルすると、strcpy_s
シンボルが見つからないというエラーが発生します。
私は行を追加しました
#define __STDC_WANT_LIB_EXT1__ 1
コードに、無駄に。
strcpy_s()
GCC (というか、glibc) はand friendsをサポートしていません。それらをサポートするライブラリを見つけることができる場所に関するいくつかのアイデアについては、ここを参照してください: 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
。少し気をつければ、安全かもしれません。