Предупреждение C28300

<>parameter_name. Выражения операндов несовместимых типов для операторов <operator_name>

Это предупреждение запускает заметку SAL, содержащую несовместимые типы.

Пример

union MyUnion
{
  int length;
  //...
};

// Oops, int and MyUnion are not compatible with the + operator.
void f(_In_reads_(10 + value) int *buffer, MyUnion value)
{
  for(int i = 0 ; i < (10 + value.length); i++)
  {
    //...
  }
}

В предыдущем примере разработчик забыл получить доступ к соответствующей переменной-члену. В других случаях может потребоваться исправить ошибку с явным приведением.

void f(_In_reads_(10 + value.length) int *buffer, MyUnion value)
{
  for(int i = 0 ; i < (10 + value.length); i++)
  {
    //...
  }
}