C28039
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
warning C28039: The type of actual parameter <operand> should exactly match the type <typename>
This warning is usually reported when an enum formal was not passed a member of the enum, but may also be used for other types.
Because C permits enums to be used interchangeably, and interchangeably with constants, it is easy to pass the wrong enum value to a function without an error.
For enum types, if the type of an enum parameter is annotated with _Enum_is_bitflag_
, arithmetic is permitted on the parameter. Otherwise the parameter must be of exactly the correct type. If a constant is strictly required, warning C28137 may also apply.
This rule can be used for other parameter types as well; see the function documentation for why the types must match exactly.