2017-03-11 2 views
-2

구조체에 여러 부울 값을 사용하는 것에 대한 질문이 있습니다.구조체의 여러 부울 값

if(b) 
{ 
bool Foo.foo2 = true; 
} 

if(b) 
{ 
    bool Foo.foo3 = true; 
} 
:

I 다른 주 구조체

typedef struct MainFoo 
{ 
    int n, 
    .... 
    . 
    . 
    FOO foo 

및 기능

void foo(int foo) 
{ 
    if(foo) 
    b = true; 
} 

의 다른 기능의 일부인 구조체

typedef struct Foo 
{ 
foo2, 
foo3 
} 

는 마지막으로 다른 클래스에서 나는

if(Foo.foo2) 
{ 
    //Do something 
} 

if(Foo.foo3) 
{ 
//Do Something 
} 

을 확인 그래서 내 질문이를 확인하기 위해 다른 더 좋은 방법이 있는지입니다. 나는 Dword를 사용하여 시도했지만 이해할 수 있을지 확신하지 못했지만 마지막 불리언 상태가 확인되어서 다른 클래스의 각 부울 값을 한 번에 확인할 수 없었습니다. 이것에 어떤 제안? bool을위한 구조체를 사용하는 것이 좋은 습관입니까? 다른 더 좋은 방법이 없다면?

고맙습니다.

+1

아마도 C++로 코드 예제를 게시 할 수 있습니까? – molbdnilo

+1

아마 비트 필드를 사용해야합니까? – mko

답변

1

주로 문제에 따라 달라집니다. 간단히 말해 MainFoo 외부의 의미가있는 경우에만 Foo 구조체를 사용하십시오 (예 : 모든 설정을 모두 함께 전송하거나 외부 파일에 저장해야하는 경우) foo2foo3MainFoo으로 이동하십시오.

제외하고 사용법은 정확합니다. 반면에 bit fields을 사용하면 메모리 소비를 줄일 수 있습니다.

struct Foo { 
    bool foo2 : 1; 
    bool foo3 : 1; 
}; 
+0

추 신 :'typedef struct'와'struct' (이 답변에서) (http://stackoverflow.com/a/612350/1485885)의 차이점을 살펴 보시기 바랍니다. – cbuchart