为了防止实现相关的数据类型在不同计算机体系结构上导致的问题,MIDL 定义了其自己的基本数据类型。
| 基类型 | 描述 |
|---|---|
| 布尔 | 一个数据项,其值 TRUE 或 FALSE。 |
| 字节 | 保证在不进行任何更改的情况下传输 8 位数据项。 |
| char | 8 位无符号字符数据项。 |
| 双 | 64 位浮点数。 |
| 浮点 | 32 位浮点数。 |
| handle_t | 可用于 RPC 绑定或数据序列化的基元句柄。 |
| hyper | 可以声明为 有符号 或 无符号 的 64 位整数也可以称为 _int64。 |
| int | 一个 32 位整数,可声明为 有符号 或 无符号。 |
| __int3264 | 一个关键字,指定具有 32 位或 64 位属性的整型类型。 |
| 长 | int 的修饰符,指示 32 位整数。 可以声明为已签名 或 未签名。 |
| 短 | 一个 16 位整数,可声明为 有符号 或 无符号。 |
| 个小 | int 的修饰符,指示 8 位整数。 可以声明为已签名 或 未签名。 |
| wchar_t | 支持作为 IDL 的Microsoft扩展的宽字符类型。 因此,如果使用 /osf 开关进行编译,则此类型不可用。 |
头文件 Rpcndr.h 为其中大多数基本数据类型提供定义。 可识别 int 关键字 并在 32 位平台上传输。 在 16 位平台上,int 数据类型需要修饰符(如 短 或 长)来指定其长度。
尽管 void * 被 ANSI C 标准识别为泛型指针类型,但 MIDL 会限制其使用。 远程或序列化作中使用的每个指针必须指向从基类型构造的基类型或类型。 (存在异常:上下文句柄定义为 void 类型。有关详细信息,请参阅 上下文句柄。)