私はC++ 11プロジェクトを持っており、strcpy_s
メソッド呼び出しを追加しました。 これはウィンドウで動作しますが、gccでコンパイルすると、シンボルが見つからないというエラー があります。strcpy_sがgccで動作しない
私は無駄に、ラインにコードに
#define __STDC_WANT_LIB_EXT1__ 1
を追加しました。
私はC++ 11プロジェクトを持っており、strcpy_s
メソッド呼び出しを追加しました。 これはウィンドウで動作しますが、gccでコンパイルすると、シンボルが見つからないというエラー があります。strcpy_sがgccで動作しない
私は無駄に、ラインにコードに
#define __STDC_WANT_LIB_EXT1__ 1
を追加しました。
GCC(またはむしろglibc)は、strcpy_s()
とお友達をサポートしていません。あなたがそれらをサポートするライブラリを見つけることができる場所についてのいくつかのアイデアについては、こちらをご覧ください:Are there any free implementations of strcpy_s and/or TR24731-1?
ありがとう、ジョン。私はちょうどそれを自分で実装し終わった。 – Jacko
strcpy_s
と友人はまだC++の一部ではありません。 C++17にはそれらがあるようですが、今のところそれらを提供するのは実装次第です。 glibcはそうではないようです。
実際、cppreferenceによれば、__STDC_WANT_LIB_EXT1__
は__STDC_LIB_EXT1__
が定義されている場合にのみ機能します。私のアーチLinuxではそうではありません。
#ifdef __STDC_LIB_EXT1__
constexpr bool can_have_strcpy_s = true;
#else
constexpr bool can_have_strcpy_s = false;
#endif
strncpy
を使用できます。いくつかの注意を払って、それは安全です。
Re: "どうしてstrncpyを使わないの?" - うん、うまくいかないから?はい、あなたはそれを動作させることができますが、 'strcpy'の"安全な "置き換えであるようには設計されておらず、そうではありません。 –
@PeteBeckerは言い換えられます。今は受け入れられますか? – krzaq
機能を調べて、その機能とサポートされている機能を調べましたか?クイックGoogle検索に基づいて私にはC11機能のように見え、C++ 11/C++ 14はC99に基づいています。類似している:http://stackoverflow.com/q/37569204/560648 –