2009-09-21 11 views
24

私はしばしば、C++が単にwcharの代わりにwchar_tという名前で行った理由を疑問に思っています。私は決して答えを見つけることができませんでした。検索エンジンは、私がWindowsのWCHARタイプについて尋ねていると思うので役に立たない。何か案は?「wchar_t」ではなく「wchar_t」と呼ばれるのはなぜですか?

+0

ANSI標準が書かれた時と、MSがwcharをコンパイラに追加したときを見たいかもしれません。 wchar_tは、MSがサポートしているwchar_tとwchar_tを区別することです。私は間違っているかもしれないので、私はこれをコメントとして行いますので、私は下降しません。 :) –

+3

標準委員会は、MSがMSが信じたいと思うことについて、それほど気にしない気がします; – Cogwheel

答えて

32

これはCの遺産で、wchar_ttypedefであり、typedefはC標準ライブラリの接尾辞を持っています。

+0

ありがとうございました。私はそれがもともとCの一部であることを認識していなかった。 – Cogwheel

+0

しかし、C++が登場し、新しいISO標準が打ち出されたときに起こった。 –

+0

C++の設計目標の1つは、標準Cとの互換性を可能な限り維持することでした。私はその特定のモチベーションに同意するとは言えませんが、彼らの決定を理解することができます。 – Cogwheel

5

私はこれがCとC++の成長の「段階」だったと思います。いくつかの新しいタイプの必要性が感じられましたが、新しいキーワードの追加は常に論争されています。コードによってはすでにwcharが使用されていましたが、コードのほうがwchar_tだったはずです。 size_tdiff_tは同じ時代であることに注意してください。

11

C標準ライブラリでは、ライブラリ内で定義されている多くのタイプの接尾辞の末尾に_tが使用されています(キーワードとしてC自体に焼き付けられたタイプとは異なります)。

例えば、(とにかく私にとって)などtime_twchar_tuint32_tsize_tptrdiff_tdiv_t、興味深いの

がありますC規格では、自分自身のためにそのフォームの名前を予約していないということです。 C標準は、 "str"、 "mem"などの接頭辞で始まる名前が将来標準に追加される可能性があることを示していますが、末尾の名前が "_t" 「int」または「uint」で始まり「_t」で終わる名前が、将来は<stdint.h>に追加される場合があります。しかし、POSIXは "_t"で終わるすべての名前を予約します。

関連する問題