PIC マイクロコントローラ用の Microchip の C18 コンパイラを使用してコンパイルするコードを移植しようとしています。コードには、大きな値が割り当てられた (>8 ビット) 列挙型が含まれています。たとえば、0x02 は 0x2002 と同じであることを示しています。
列挙値を強制的に 16 ビット値として参照するにはどうすればよいですか?
DirectX ヘッダーでは、すべての列挙型に のFORCE_DWORD
値を持つ値があり0xffffffff
ます。それは基本的にあなたが望むものだと思います.enumに少なくとも32ビットを持たせるようにコンパイラに強制します。FORCE_WORD
という値のa を追加してみてください0xffff
。
もちろん、そのコンパイラが8ビットを超える列挙型をサポートしていない場合、これは問題を解決しません。
問題が見つかりました。
今後の参考として、C18 コンパイラは、ANSI C 標準であっても、数学演算を実行するときに変数または定数をプロモートしません。これは、8 ビット プロセッサでの実行中に速度を上げるためです。
ANSI 準拠を強制するには、"-Oi" コンパイラ オプションを使用します。