强类型化

C 是一种弱类型语言,即编译器允许在不同类型的变量之间进行赋值和比较等操作。 例如,C 允许将变量的值强制转换为另一种类型。 能够在同一表达式中使用不同类型的变量,可以提高灵活性和效率。

强类型语言对不同类型的变量的操作施加限制。 在这些情况下,编译器会发出一个禁止操作的错误。 这些有关数据类型的严格准则旨在避免潜在的错误。

将弱类型语言(如 C)用于远程过程调用的困难在于,分布式应用程序可以在具有不同 C 编译器和不同体系结构的多个不同计算机上运行。 如果应用程序仅在一台计算机上运行,则无需考虑内部数据格式,因为数据以一致的方式处理。 但是,在分布式计算环境中,不同的计算机可以对其基本数据类型使用不同的定义。 例如,某些计算机定义 int 类型,因此其内部表示形式为 16 位,而其他计算机使用 32 位。 一种称为“little endian”的计算机体系结构将数据中最小有效字节分配给最低内存地址,将最高有效字节分配给最高地址。 另一种称为“big endian”的体系结构将最小有效字节分配给与该数据关联的最高内存地址。

远程过程调用需要严格控制参数类型。 为了通过网络处理数据传输和转换,MIDL 对通过网络传输的数据严格强制实施类型限制。 因此,MIDL 包括一组定义完善的 基类型。 MIDL 通过强制使用明确定义数据的大小和类型的关键字来强制实施强键入。 强类型化最明显的效果是 MIDL 不允许 类型 void *的变量。

在以下主题中,本部分讨论强制实施强数据键入的 MIDL 语言功能: