6

こんにちは!

むかしむかし、atoi である ansi バージョンしかありませんでした。

そして今(それもずっと昔ですが)ワイド文字バージョンがあります。

しかし、ワイド char バージョンでは、wtoi の前に uderline('_') があるのはなぜですか?

理由を教えてもらえますか?ありがとう :)

4

2 に答える 2

5

ほとんどの場合、アンダースコアで始まる関数は実装の追加です。それらは C 標準ライブラリの一部ではありません。(例外があります。たとえば_Exit、C 標準ライブラリの一部ですが、Visual C++ 実装にはまだ実装されていません。)先頭のアンダースコアで始まる識別子は、グローバル名前空間で予約されているため、非標準の拡張機能を回避するために使用されます。ユーザー定義の名前と競合します。

C 標準ライブラリにない理由についてwtoi: ワイド文字関数が C 標準ライブラリに追加されるまでに、変換が成功したか失敗したかを検出する方法がないatoiため、インターフェイスに欠陥があることが理解されました。

atoiまたはを使用しないでください_wtoi。代わりに、preferred関数strtolwcstol関数を使用してください。どちらも C 標準ライブラリの一部です。(他の型に対する同様の名前の変換関数が他にもあります。たとえばstrtof、 and wcstofto convert および to convert toなどがfloatあります。)strtoullwcstoullunsigned long long

于 2014-04-19T07:59:07.610 に答える
1

Microsoft は、_atoi_l, _wtoi, _wtoi_lベンダー固有の拡張機能として機能を提供します。これらは標準の C/C++ ライブラリ関数ではありません。これらには、標準の C/C++ ライブラリ関数から派生した名前を持つベンダー固有の関数が多数あります。

于 2014-04-19T06:43:24.480 に答える