我试图移植代码以使用Microchip的PIC18单片机的C18编译器进行编译。该代码包含分配有大值的枚举(> 8位)。它们工作不正常,例如,0x02与0x2002相同。C18编译器typedef枚举数据大小
如何强制将枚举值引用为16位值?
我试图移植代码以使用Microchip的PIC18单片机的C18编译器进行编译。该代码包含分配有大值的枚举(> 8位)。它们工作不正常,例如,0x02与0x2002相同。C18编译器typedef枚举数据大小
如何强制将枚举值引用为16位值?
我发现了这个问题。
为了将来的参考,C18编译器在执行数学运算时不会促进变量或常量,即使它是ANSI C标准。这是为了在8位处理器上运行时提高速度。
要强制符合ANSI标准,请使用“-Oi”编译器选项。
在DirectX头文件中,每个枚举的值都是FORCE_DWORD
,值为0xffffffff
。我想这基本上是你想要的,它迫使编译器让枚举至少有32位。因此,请尝试添加值为0xffff
的FORCE_WORD
。
这不会解决您的问题,当然,如果该编译器不支持大于8位的枚举。