2013-03-29 2 views
2

미리 정의 된 특정 열거 형의 피연산자를 가져 오는 함수가 있습니다. 안전을 이유로 피연산자가 특정 enum 유형에 속하는지 테스트하는 기능이 필요합니다. 어떻게해야합니까?열거 형 검사

+0

모든 enms 도메인에 대해 테스트 케이스를 만들 수 있습니다 –

+0

C 및 C++은 이와 동일하지 않습니다. 먼저 원하는 것을 결정해야합니다. –

+0

나는 arduino에서 그들이 c/C++ 시스템을 가지고 있다고 말했지만 ok는 C가 더 좋다고 말할 수있다. – kyrpav

답변

1

. 매크로가 도움이 될 수 있습니다.

enum /* ... */ 
{ 
    V1 = 0, 
    V2 = 2, 
}; 

1enum /*...*/ 유형에 대한 유효 값입니다

도에 있다고이 점에 표준에 측면이있다. 따라서 "열거 형 검사"가 의미하는 바를 조금 더 자세히 설명해야합니다.

+0

그래서 이것은 0에서 maxValueOfEnum 사이의 값을 확인하면 C에서 열거 형 자동으로 0부터 시작하고 열거 형 "점프"어떤 정수가 없다면 아무 문제가 없다 – kyrpav

0

C의 열거 형은 정수형이므로 특정 열거 형에 속하는지 여부를 확인할 방법이 없습니다. 당신이 특정 값을 주면, 당신이 모든 값에 대해 확인해야합니다, 그러나

if (v < V1 || v > VN) 
{ 
    /* invalid */ 
} 

: 당신은 조건을 사용할 수 있습니다

enum /* ... */ 
{ 
    V1, 
    V2, 
    /* ... */ 
    VN 
}; 

: 당신의 enum 같은 것을 보인다면

+0

네,하지만이 특별한 경우 엔 enum이이 정수를 전달하기 위해 사용되었으므로 여기서는 작동한다고 생각합니다. 그렇다면 내가 무엇을해야합니까 – kyrpav

관련 문제