结构中的多个布尔值

Multiple boolean values in an struct

我对在结构中使用多个布尔值有疑问。

我有一个结构

typedef struct Foo
{
 foo2,
 foo3
}

这是另一个主要结构的一部分

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

和函数

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

在另一个函数中:

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

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

最后在另一个 class 我检查

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

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

所以我的问题是是否有任何其他更好的方法来检查这些。我尝试使用 Dword,但不确定我是否理解它,但它只是得到了最后一个被检查的布尔状态,因此无法在另一个 class 中一次检查每个布尔状态。这方面有什么建议吗?仅将结构用于 bool 是一种好习惯吗?如果没有还有其他更好的方法吗?

非常感谢

主要看你的问题。简而言之,仅当 Foo 结构在 MainFoo 作为一个整体之外具有某种意义时才使用它(例如,如果它们都是应该一起传输或保存到外部文件的所有设置),否则移动foo2foo3MainFoo

除此之外,使用都是正确的。另一方面,如果使用 bit fields.

可以减少内存消耗
struct Foo {
  bool foo2 : 1;
  bool foo3 : 1;
};