こんにちは!
むかしむかし、atoi である ansi バージョンしかありませんでした。
そして今(それもずっと昔ですが)ワイド文字バージョンがあります。
しかし、ワイド char バージョンでは、wtoi の前に uderline('_') があるのはなぜですか?
理由を教えてもらえますか?ありがとう :)
こんにちは!
むかしむかし、atoi である ansi バージョンしかありませんでした。
そして今(それもずっと昔ですが)ワイド文字バージョンがあります。
しかし、ワイド char バージョンでは、wtoi の前に uderline('_') があるのはなぜですか?
理由を教えてもらえますか?ありがとう :)
ほとんどの場合、アンダースコアで始まる関数は実装の追加です。それらは C 標準ライブラリの一部ではありません。(例外があります。たとえば_Exit
、C 標準ライブラリの一部ですが、Visual C++ 実装にはまだ実装されていません。)先頭のアンダースコアで始まる識別子は、グローバル名前空間で予約されているため、非標準の拡張機能を回避するために使用されます。ユーザー定義の名前と競合します。
C 標準ライブラリにない理由についてwtoi
: ワイド文字関数が C 標準ライブラリに追加されるまでに、変換が成功したか失敗したかを検出する方法がないatoi
ため、インターフェイスに欠陥があることが理解されました。
atoi
またはを使用しないでください_wtoi
。代わりに、preferred関数strtol
とwcstol
関数を使用してください。どちらも C 標準ライブラリの一部です。(他の型に対する同様の名前の変換関数が他にもあります。たとえばstrtof
、 and wcstof
to convert および to convert toなどがfloat
あります。)strtoull
wcstoull
unsigned long long
Microsoft は、_atoi_l, _wtoi, _wtoi_l
ベンダー固有の拡張機能として機能を提供します。これらは標準の C/C++ ライブラリ関数ではありません。これらには、標準の C/C++ ライブラリ関数から派生した名前を持つベンダー固有の関数が多数あります。