2009-08-05 37 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位的枚舉。