1

我正在尝试移植代码以使用 Microchip 的 C18 编译器为 PIC 微控制器进行编译。该代码包括分配了大值(> 8 位)的枚举。它们工作不正常,说明例如 0x02 与 0x2002 相同。

如何强制将枚举值引用为 16 位值?

4

2 回答 2

1

在 DirectX 标头中,每个枚举都有一个FORCE_DWORD值为0xffffffff. 我想这基本上就是你想要的,它强制编译器让枚举至少有32 位。所以尝试添加一个FORCE_WORD值为0xffff.

当然,如果该编译器不支持大于 8 位的枚举,这不会解决您的问题。

于 2009-08-05T13:19:19.730 回答
1

我发现了问题。

为了将来参考,C18 编译器在执行数学运算时不会提升变量或常量,即使它是 ANSI C 标准。这是为了在 8 位处理器上运行时提高速度。

要强制符合 ANSI,请使用“-Oi”编译器选项。

请参阅 C18 手册的第 92 页。

于 2009-09-02T12:51:22.457 回答