• ベストアンサー

VC++ の コンパイルオプション

最近、マイクロソフトの VC++ Ver.6を買いました。  解説を読んで、文字コードのオプションとして、 _MBCS と  _UNICODE があることを知りました。  今までは、ボーランドの古いコンパイラを 使っていましたので、文字コードは ShiftJIS でした。  皆さんは、どんなものを作るときに、 どちらのオプションを選んでいますか? また、OS の現状からみて、どちらがお勧めですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

通常は、指定してあるとすれば_MBCSでしょう。 なぜなら、UNICODE対応のWindowsAPIは、Win9x系には存在しないからです。 なので、9x系とNT系の両方に対応させようとすると、必然的にUNICODEは使用できません。 半角文字(MBCSの1バイト文字)と全角文字(MBCSの多バイト文字)の違いを意識する必要がなく、 Win2000やWinXPのみ動作対象とするアプリを作成するのであれば、UNICODEにしたほうが動作が 速くなるはずなのでいいのではないでしょうか? ちなみに、_MBCS、_UNICODEの指定で定義が変わるのは、ほとんどがTCHAR.Hの内容です。 興味があれば覗いてみてください。 それぞれの定義によって、_tが先頭についている関数がどのように置き換えられるかがわかります。 また、UNICODE対応のAPIを使用するには、_UNICODEだけではなく、 UNICODEも#define等で指定する必要があります。

uyama33
質問者

お礼

NT を使っているせいか、 いつの間にか UNICODE になってしまっていて、何か変だったのです。 TCHAR.Hの内容です。 興味があれば覗いてみてください。 それぞれの定義によって、_tが先頭についている関数がどのように置き換えられるかがわかります。 これについては、マニュアルを読みましたので分かりました。 参考にしている ソースファイルが L("abn.txt") のような表現を含んでいるので、 ユニコードをやめると問題が起こるかもしれませんが SJIS でやってみます。 ありがとうございました。

その他の回答 (1)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

普通にVC++を使う文にはSJISを使用します。 UNICODEを使えば将来性はあがるかもしれませんが 古いライブラリを使う場合にUNICODEだとエラーを 起こす危険があります。 OSという観点からはWindowsは内部処理を全て UNICODEでおこなっているのでUNICODEの方が 処理速度的には速いのかもしれません。 たいていのWin32APIはSJIS用とUNICODE用がそれぞれが用意されています。 今はSJIS→UNICODEの過渡期といったところでしょうか。

uyama33
質問者

お礼

 ありがとうございます。 エディタを作ってみたら それが、他のワープロで読めなかったので びっくりしました。 SJIS を使うようにします。