c++にはstring型という便利なものがあるのになぜ WIN32APIでは文字列を使うのにchar型の配列を使わないといけないのですか?
c++にはstring型という便利なものがあるのになぜ WIN32APIでは文字列を使うのにchar型の配列を使わないといけないのですか?
ベストアンサー
~理由~ Win32 API は DLL の中に入っていますからね。それが理由です。 DLLに実装した関数で std::string 型の引数や戻り値を使いたいと思ったとして(そういう風に思わない方が良いと考えますが、それでも何か特別な事情があったとして)、そうするとその DLL では特定のバージョンの C++ ランタイム DLL を必要とする形になり、そしてまた、その DLL を使用する EXE の側もまたその特定のバージョンの C++ ランタイム DLL を必要とすることになります。 DLL は、EXE と製造時期異なっても良いというのが一つの特徴であると言えると思います。でも、両者で同一の C++ ランタイム DLL の使用が強制されるとなると、その特徴を活かすことが出来ません。 というか、EXE を製造する際に使う Visual Studio のバージョンまでもが固定されてしまうことに…。 そういうわけで DLL 内に実装する関数に対する引数や戻り値で std::string を使う等ということは普通はしません。Win32 API が引数、戻り値で std::string を使わないのは、ですから当然のことなんですね。
質問者からのお礼コメント
一番納得のいく回答でした。 ありがとうございました!
お礼日時:1/29 20:31