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