我正在尝试使用Microchip的C18编译器为PIC微控制器移植代码进行编译。代码包括分配了较大值(>8位)的枚举。它们不能正常工作,例如,0x02与0x2002相同。
如何强制将枚举值引用为16位值?
发布于 2009-09-02 12:51:22
我找到问题了。
为了便于将来参考,C18编译器在执行数学运算时不会提升变量或常量,即使它是ANSI标准。这是为了在8位处理器上运行时提高速度。
要强制遵从ANSI,请使用"-Oi“编译器选项。
See page 92 of the C18 manual.
发布于 2009-08-05 13:19:20
在DirectX标头中,每个枚举都有一个FORCE_DWORD值,其值为0xffffffff。我猜这基本上就是你想要的,它迫使编译器让枚举至少有32位。因此,尝试添加一个值为0xffff的FORCE_WORD。
当然,如果编译器不支持大于8位的枚举,那么这不会解决您的问题。
https://stackoverflow.com/questions/1233074
复制相似问题