厳密な型指定

C は弱く型指定された言語です。つまり、コンパイラでは、異なる型の変数間での代入や比較などの操作が許可されます。 たとえば、C を使用すると、変数の値を別の型にキャストできます。 同じ式で異なる型の変数を使用する機能により、柔軟性と効率が向上します。

厳密に型指定された言語では、異なる型の変数間の操作に制限が課されます。 このような場合、コンパイラは操作を禁止するエラーを発行します。 データ型に関するこれらの厳格なガイドラインは、潜在的なエラーを回避するように設計されています。

リモート プロシージャ コールに C などの弱く型指定された言語を使用する場合の難しさは、分散アプリケーションが異なる C コンパイラと異なるアーキテクチャを持つ複数の異なるコンピューターで実行できることです。 アプリケーションが 1 台のコンピューターでのみ実行される場合、データは一貫した方法で処理されるため、内部データ形式に関係する必要はありません。 ただし、分散コンピューティング環境では、異なるコンピューターで基本データ型に異なる定義を使用できます。 たとえば、一部のコンピューター では int 型が定義されているため、内部表現は 16 ビットですが、他のコンピューターでは 32 ビットが使用されます。 "リトル エンディアン" と呼ばれる 1 つのコンピューター アーキテクチャでは、データの最下位バイトが最も低いメモリ アドレスに割り当てられ、最上位バイトが最上位アドレスに割り当てられます。 "ビッグ エンディアン" と呼ばれる別のアーキテクチャでは、そのデータに関連付けられている最上位のメモリ アドレスに最下位バイトが割り当てられます。

リモート プロシージャ 呼び出しでは、パラメーターの型を厳密に制御する必要があります。 MIDL は、ネットワーク経由でのデータ転送と変換を処理するために、ネットワーク経由で転送されるデータの型制限を厳密に適用します。 このため、MIDL には、明確に定義された 基本型のセットが含まれています。 MIDL では、データのサイズと型を明確に定義するキーワードの使用を義務付けることで、厳密な型指定を強制します。 厳密な型指定の最も目に見える効果は、MIDL で void 型の変数が許可されないことです *

次のトピックでは、強力なデータ入力を強制する MIDL 言語機能について説明します。