2009-08-05 8 views
1

私はPICマイクロコントローラ用のマイクロチップの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ビット以上の列挙型をサポートしていない場合、これはあなたの問題を解決しません。