C28039
предупреждение C28039: Тип фактического параметра <operand> должен соответствовать типу <typename>
Это предупреждение обычно появляется, когда формальное значение перечисления не является членом перечисления, но может также использоваться и для других типов.
Поскольку в языке C разрешено использовать перечисления взаимозаменимо и взаимозаменимо с константами, то легко передать неверное значение перечисления функции без ошибки.
Для типов перечисления, если тип параметра перечисления объявляется с _Enum_is_bitflag_, то с данным параметром разрешены арифметические действия.В противном случае параметр должен иметь в точности правильный тип.Предупреждение C28137 также может появиться, если строго требуется константа.
Это правило может использоваться и для других типов параметров; см. документацию по функциям, почему типы должны точно совпадать.