0

特定の言語で関数/構造体フィールドのパラメーターを定義するときに Windows データ型を使用する目的を理解しようとしています。「基になる型」​​が変更された場合にコードが「壊れる」のを防ぐ方法について詳しく説明した説明を読みました。誰かが簡潔な説明と明確にする例を提示できますか? ありがとう。

4

1 に答える 1

0

同様の投稿で回答が見つかりました ( Why are the standard datatypes not used in Win32 API? ):

そして、これらの型が int や char などを使用するのではなく、そのまま定義されている理由は、OS のインターフェイスから「コンパイラが int のサイズを決定する必要があるものは何でも」を削除するためです。コンパイラ A、コンパイラ B、またはコンパイラ C を使用する場合、それらはすべて同じ型を使用するため、これは非常に良いことです。ライブラリ インターフェイス ヘッダー ファイルだけが型を定義する正しいことを行う必要があります。

標準型ではない型を定義することで、たとえば int を 16 ビットから 32 ビットに簡単に変更できます。Windows 用の最初の C/C++ コンパイラは、16 ビット整数を使用していました。Windows が 32 ビット API を取得したのは 1990 年代半ばから後半のことで、それまでは 16 ビットの int を使用していました。数百の int 変数を使用する適切に機能するプログラムがあり、突然、それらすべての変数を別のものに変更する必要があると想像してください...あまり良くないでしょう-特にそれらのいくつかとしてコードの一部を 32 ビットの int に移動しても違いがないため、変数を変更する必要はありません。したがって、これらのビットを変更しても意味がありません。

WCHAR は const char と同じではないことに注意してください。WCHAR は「ワイド char」であるため、wchar_t は同等の型です。

したがって、基本的に、「独自の型を定義する」ことは、ソース コード (の多く) を変更することなく、基礎となるコンパイラ アーキテクチャを変更できることを保証する方法です。マシン依存のコーディングを行う大規模なプロジェクトはすべて、この種のことを行います。

于 2013-08-03T03:40:41.523 に答える