/char switch

/char 开关有助于确保 MIDL 编译器和 C 编译器对所有字符小型类型正确运行。

midl /char { signed | unsigned | ascii7 }

切换选项

签署

指定 对 char 的默认 C 编译器类型进行签名。 所有不附带符号规范的 char 都生成为无符号字符。

符号

指定 char 的默认 C 编译器类型为无符号。 所有不附带符号规范的 小型 用法都生成为有符号的小型。

ascii7

指定将所有字符值传递到生成的文件中,而不关键字 (keyword) 特定符号。 所有不附带符号规范 的小型 用法都生成为 小型

备注

根据定义,MIDL char 是无符号的。 “Small”定义为 char (#define small char) ,MIDL small 已签名。

当 C 编译器符号声明与该类型的 MIDL 默认值冲突时, /char 开关指示 MIDL 编译器在生成的文件中指定显式 有符号无符号 声明。

请记住,MIDL 编译器将存根生成为 C 源代码,必须将其编译为客户端和服务器程序的一部分。 某些编译器在源代码中指定 char 数据的位置都使用带符号字符。 MIDL 编译器生成的存根源代码将所有 字符 数据视为 无符号字符。 如果 MIDL 编译器只是将 IDL 文件中的所有字符数据生成为存根中的 char 数据,则对 char 数据使用带符号字符的编译器将导致存根源代码中发生冲突。

/char 命令行开关的目的是解决这些潜在的冲突。 它将 IDL 文件中指定为 char 的所有数据保留为存根源代码中的 无符号 char 。 它还将 小型 数据保留为已签名数据。

下表汇总了生成的类型。

midl /char 选项 生成的字符类型 生成的小型类型
midl /char signed unsigned char small
midl /char unsigned char 已签名的小型
midl /char ascii7 char small

 

/char signed 选项指示对 C 编译器字符和小型类型进行签名。 若要匹配 char 的 MIDL 默认值,MIDL 编译器必须将不附带符号规范的 char 的所有用法转换为 无符号字符。 不会修改 小型 类型,因为此 C 编译器默认值与 SMALL 的 MIDL 默认值匹配。

/char unsigned 选项指示 C 编译器字符类型为无符号。 MIDL 编译器将不附带符号规范的 small 的所有用法转换为 有符号的 small

ascii7 选项指示未向 字符 类型添加任何显式符号规范。 类型 small 生成为 small

为了避免混淆,应尽可能在 IDL 文件中对 char 和 small 类型使用显式符号规范。 请注意,DCE IDL 不支持在 IDL 文件中使用显式签名 字符 类型。 因此,使用 MIDL /osf 开关进行编译时,此功能不可用。

有关 /char 的详细信息,请参阅 small

示例

midl /char signed filename.idl

midl /char unsigned filename.idl

midl /char ascii7 filename.idl

另请参阅

字符

常规 MIDL 命令行语法

/osf