已签名和无符号类型 (RPC)

对已签名和未签名类型使用不同的默认值的编译器可能会导致分布式应用程序中的软件错误。 可以通过将字符类型显式声明为 已签名无符号来避免这些问题。

MIDL 定义 类型,以采用与目标 C 编译器中 字符 类型相同的默认符号。 如果编译器假定 字符 为无符号,则 也将定义为无符号。 许多 C 编译器允许将默认值更改为命令行选项。 例如,Microsoft C 编译器 /J 命令行选项将 char 的默认符号从已签名更改为未签名。

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