2009-08-05 80 views
1

我试图移植代码以使用Microchip的PIC18单片机的C18编译器进行编译。该代码包含分配有大值的枚举(> 8位)。它们工作不正常,例如,0x02与0x2002相同。C18编译器typedef枚举数据大小

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

回答

1

我发现了这个问题。

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

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

See page 92 of the C18 manual.

1

在DirectX头文件中,每个枚举的值都是FORCE_DWORD,值为0xffffffff。我想这基本上是你想要的,它迫使编译器让枚举至少有32位。因此,请尝试添加值为0xffffFORCE_WORD

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