さまざまな実装上の理由から、次の列挙型を定義しました。
typedef enum HBSnakeMovementDirection
{
HBSnakeMovementDirectionUp = 1,
HBSnakeMovementDirectionDown = -1,
HBSnakeMovementDirectionRight = 2,
HBSnakeMovementDirectionLeft = -2
}
HBSnakeMovementDirection;
ただし、を使用しようとするとHBSnakeMovementDirectionRight
、次の警告が表示されます。
Implicit conversion changes signedness: 'int' to 'HBSnakeMovementDirection'
他の列挙値のいずれにも問題はありません。ここでの問題は何ですか?負の列挙値と正の列挙値の混合に関係しているのではないかと思いましたが、これについて明確なことは何もわかりません。
(この問題を回避できるすべての正の列挙値を思い付くことができましたが、それでも困惑したので、それについて質問したいと思いました。)
私のすべてのプロジェクトと同様に、私はほとんどすべての警告、つまり、-Wconversion
の苦情を有効にし、それらをエラーとして扱うことを述べなければなりません。(コンパイル時にできるだけ厳密にするのが好きです。)私はLLVM1.6を使用しています。
更新1:文字通りHBSnakeMovementDirectionRight
、前の警告の結果の使用:
HBSnakeMovementDirection movementDirectionRight = HBSnakeMovementDirectionRight;
警告を消すためにキャストHBSnakeMovementDirectionRight
する必要があります。HBSnakeMovementDirection
更新2:要求に応じて、これが私のマシンで発行されているビルドコマンド全体です:
更新3:これがGitHubでホストされている私が取り組んでいる正確なプロジェクトです:
https://github.com/LucasTizma/Hebi
具体的には、次のツリーです。
https://github.com/LucasTizma/Hebi/tree/89262e2e53881584daf029e3dd5f1e99dfbd6f96