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


C28139

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

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

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

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

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

Пример

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

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

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

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