1

PIC マイクロコントローラ用の Microchip の C18 コンパイラを使用してコンパイルするコードを移植しようとしています。コードには、大きな値が割り当てられた (>8 ビット) 列挙型が含まれています。たとえば、0x02 は 0x2002 と同じであることを示しています。

列挙値を強制的に 16 ビット値として参照するにはどうすればよいですか?

4

2 に答える 2

1

DirectX ヘッダーでは、すべての列挙型に のFORCE_DWORD値を持つ値があり0xffffffffます。それは基本的にあなたが望むものだと思います.enumに少なくとも32ビットを持たせるようにコンパイラに強制します。FORCE_WORDという値のa を追加してみてください0xffff

もちろん、そのコンパイラが8ビットを超える列挙型をサポートしていない場合、これは問題を解決しません。

于 2009-08-05T13:19:19.730 に答える
1

問題が見つかりました。

今後の参考として、C18 コンパイラは、ANSI C 標準であっても、数学演算を実行するときに変数または定数をプロモートしません。これは、8 ビット プロセッサでの実行中に速度を上げるためです。

ANSI 準拠を強制するには、"-Oi" コンパイラ オプションを使用します。

C18 マニュアルの 92 ページを参照してください。

于 2009-09-02T12:51:22.457 に答える