2016-07-02 3 views
0

나는 프로그램 검증 소프트웨어를 실행 중이며 어떤 멤버가 활성 상태인지에 대해 말하고 싶습니다. 그래서 태그가 지정된 유니온으로 쓰려고했습니다 :(태그가있는) 공용 멤버의 액티브 회원

struct my_struct { 
    enum my_tag {v1, v2}; 
    struct{ 
     enum my_tag tag; 
     union { 
      type1 v1; 
      type2 v2; 
     }value; 
    }my_taggedunion; 
}; 

그리고 프로그램 검증 소프트웨어를 실행 중입니다. 난 my_taggedunion.tag == v1 그때 조합의 활성 회원 v1 해야하는 요구 사항을 추가하고 싶습니다.

내가 좋아하는 뭔가를 쓰기 위해 노력하고있어 "무엇이 결론에 대한 올바른 구문은 다음 my_taggedunion.active_member == v1my_taggedunion.tag == v1 경우를.?

의 어떤 개념이 없다
+1

당신이 무엇을 요구하고 있는지 명확하지 않습니다. 'my_taggedunion.active_member' 필드가 없습니다. 'my_taggedunion.tag == v1' 일 때 정확하게하고 싶습니까? – kaylum

+0

프로그램 검증 소프트웨어에 의존하지 않습니까? – melpomene

+0

정확하게, 나는 액티브 한 멤버가 무엇인지를 어떻게 지정할 수 있는지 묻는다. –

답변

3

"C는 우려까지로 "정회원이. 참고 그 C는 ANSI 표준에있어서 조합 포인터가 회원에 대한 포인터의 형식으로 캐스팅 경우

, 결과는 그 부재를 지칭

. 당신은 당신의 경우에 당신이 my_tag을 통해하고있는 노동 조합 자신의 관련 부분을 추적해야

(X3.159-1989 및 커니 핸 & 리치의 A8.3의 3.5.2.1 참조).

+2

표준에 부록 A8이 없습니다. 올바른 참조를 제공하십시오. – Olaf