【发布时间】:2009-08-05 12:54:59
【问题描述】:
我正在尝试移植代码以使用 Microchip 的 C18 编译器为 PIC 微控制器进行编译。该代码包括分配了大值(> 8 位)的枚举。不能正常工作,说明比如0x02和0x2002是一样的。
如何强制将枚举值引用为 16 位值?
【问题讨论】:
我正在尝试移植代码以使用 Microchip 的 C18 编译器为 PIC 微控制器进行编译。该代码包括分配了大值(> 8 位)的枚举。不能正常工作,说明比如0x02和0x2002是一样的。
如何强制将枚举值引用为 16 位值?
【问题讨论】:
在 DirectX 标头中,每个枚举都有一个 FORCE_DWORD 值,其值为 0xffffffff。我想这基本上就是您想要的,它强制编译器让枚举具有 至少 32 位。所以尝试添加一个值为0xffff 的FORCE_WORD。
当然,如果该编译器不支持大于 8 位的枚举,这不会解决您的问题。
【讨论】:
我发现了问题。
为了将来的参考,C18 编译器在执行数学运算时不会提升变量或常量,即使它是 ANSI C 标准。这是为了提高在 8 位处理器上运行时的速度。
要强制符合 ANSI,请使用“-Oi”编译器选项。
【讨论】: