Поделиться через


C28139

предупреждение C28139: аргумент должен точно соответствовать типу

Дополнительные сведения

Некоторые функции допускают ограниченную арифметику для типа аргумента, а другие — нет. Обычно это означает, что формальное перечисление не было передано члену перечисления, но может использоваться и для других типов.

Перечислимое значение в вызове функции не соответствует типу, указанному для параметра в объявлении функции. Эта ошибка может возникать при неправильном коде, отсутствии или неправильном коде параметров. Поскольку C позволяет использовать перечисляемые значения взаимозаменяемо и использовать их с целочисленными константами, не редкость передача неправильного перечисленного значения в функцию без распознавания ошибки.

Если средство анализа кода сообщает об этой ошибке, обратитесь к документации по функции в WDK. Некоторые функции закодированы так, чтобы разрешить только перечислимые значения. Другие позволяют оператору ?: выбирать между значениями этого типа или разрешать арифметику для членов перечисленного типа, например, если битовые флаги кодируются как перечислимое значение. В некоторых случаях перечисляемые значения и константы могут быть объединены.

Пример

В следующем примере кода показано это предупреждение.

....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);

Следующий пример кода позволяет избежать этого предупреждения.

....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);