C28139
경고 C28139: 인수가 형식과 정확히 일치해야 합니다.
추가 정보 |
일부 함수는 인수 형식에 대해 제한된 산술 연산을 허용하고 다른 함수는 그렇지 않습니다. 이는 일반적으로 열거형 형식이 열거형의 멤버를 전달하지 않았지만 다른 형식에도 사용될 수 있음을 나타냅니다. |
함수 호출의 열거형 값이 함수 선언에서 매개 변수에 지정된 형식과 일치하지 않습니다. 이 오류는 매개 변수가 잘못 코딩되거나 누락되거나 순서가 잘못된 경우에 발생할 수 있습니다. C는 열거형 값을 서로 바꿔서 사용하고 정수 상수와 교환하여 사용할 수 있도록 허용하므로 오류를 인식하지 않고 잘못된 열거형 값을 함수에 전달하는 것은 드문 일이 아닙니다.
코드 분석 도구에서 이 오류를 보고하는 경우 WDK의 함수 설명서를 참조하세요. 일부 함수는 열거형 값만 허용하도록 코딩됩니다. 다른 항목에서는 ?: 연산자가 해당 형식의 값 중에서 선택하거나 비트 플래그가 열거형 값으로 인코딩되는 경우와 같이 열거형 형식의 멤버에 대한 산술 연산을 허용합니다. 경우에 따라 열거형 값과 상수가 결합될 수 있습니다.
예제
다음 코드 예제에서는 이 경고를 유도합니다.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);
다음 코드 예제에서는 이 경고를 방지합니다.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);