По различным причинам реализации я определил следующее перечисление:
typedef enum HBSnakeMovementDirection
{
HBSnakeMovementDirectionUp = 1,
HBSnakeMovementDirectionDown = -1,
HBSnakeMovementDirectionRight = 2,
HBSnakeMovementDirectionLeft = -2
}
HBSnakeMovementDirection;
Однако, если я попытаюсь использовать HBSnakeMovementDirectionRight
, я получу следующее предупреждение:
Implicit conversion changes signedness: 'int' to 'HBSnakeMovementDirection'
Нет проблем с другими значениями перечисления.В чем здесь проблема?Я думал, что это может быть связано со смешением отрицательных и положительных значений перечисления, но я не могу найти ничего определенного по этому поводу.
(я смог придумать все положительные значения перечисления, которые позволяют мне работатьвокруг этой проблемы, но она все еще ставила меня в тупик, поэтому я решил спросить об этом)жалобы - и относитесь к ним как к ошибкам.(Мне нравится быть максимально строгим во время компиляции.) Я использую LLVM 1.6.
UPDATE 1 : буквально любое использование HBSnakeMovementDirectionRight
приводит к предыдущему предупреждению:
HBSnakeMovementDirection movementDirectionRight = HBSnakeMovementDirectionRight;
Я должен привести HBSnakeMovementDirectionRight
к HBSnakeMovementDirection
, чтобы отключить предупреждение.
ОБНОВЛЕНИЕ 2 : В соответствии с запросом приведена вся команда построения, которая выполняетсявыпущено на моей машине:
http://pastie.org/1580957
ОБНОВЛЕНИЕ 3 : Вот точный проект, над которым я работаю, размещенный на GitHub:
https://github.com/LucasTizma/Hebi
В частности, следующее дерево:
https://github.com/LucasTizma/Hebi/tree/89262e2e53881584daf029e3dd5f1e99dfbd6f96