由于各种实现原因,我定义了以下枚举:
typedef enum HBSnakeMovementDirection
{
HBSnakeMovementDirectionUp = 1,
HBSnakeMovementDirectionDown = -1,
HBSnakeMovementDirectionRight = 2,
HBSnakeMovementDirectionLeft = -2
}
HBSnakeMovementDirection;
但是,如果我尝试使用HBSnakeMovementDirectionRight
,我会收到以下警告:
Implicit conversion changes signedness: 'int' to 'HBSnakeMovementDirection'
它与任何其他枚举值都没有问题。这里有什么问题?我认为这可能与混合负数和正数枚举值有关,但我找不到任何明确的信息。
(我能够提出所有允许我解决这个问题的积极枚举值,但它仍然难倒我,所以我想我会问一下。)
我应该声明,就像我所有的项目一样,我启用了几乎所有的警告——因此-Wconversion
是抱怨——并将它们视为错误。(我喜欢在编译时尽可能严格。)我使用的是 LLVM 1.6。
更新 1:从字面上看HBSnakeMovementDirectionRight
,在前面的警告中对结果的任何使用:
HBSnakeMovementDirection movementDirectionRight = HBSnakeMovementDirectionRight;
我必须投到HBSnakeMovementDirectionRight
以HBSnakeMovementDirection
使警告静音。
更新 2:根据要求,这是在我的机器上发出的整个构建命令:
更新 3:这是我正在 GitHub 上托管的确切项目:
https://github.com/LucasTizma/Hebi
具体来说,以下树:
https://github.com/LucasTizma/Hebi/tree/89262e2e53881584daf029e3dd5f1e99dfbd6f96