有符号类型和无符号类型 (MIDL)

对有符号和无符号类型使用不同的默认值的编译器可能会导致分布式应用程序中出现软件错误。 可以通过将字符类型显式声明为有符号或无符号来避免这些问题。 请注意,DCE IDL 编译器无法识别关键字 (keyword) 签名。 因此,使用 MIDL 编译器 /osf 开关时,此功能不可用。

MIDL 定义 小型 类型,以采用与目标 C 编译器中的 char 类型相同的默认符号。 如果编译器假定 char 是无符号的,则 small 也将定义为 unsigned。 许多 C 编译器允许将默认值更改为命令行选项。 例如,在Microsoft Visual C++开发环境中,/J 命令行选项将 char 的默认符号从 signed 更改为 unsigned。

还可以使用 MIDL 编译器命令行开关 /char 控制 charsmall 类型的变量 符号。 此开关允许指定编译器使用的默认符号。 MIDL 编译器显式声明与生成的头文件中 C 编译器默认类型不匹配的所有 char 类型的符号。