结构中的多个布尔值
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
作为一个整体之外具有某种意义时才使用它(例如,如果它们都是应该一起传输或保存到外部文件的所有设置),否则移动foo2
和 foo3
到 MainFoo
。
除此之外,使用都是正确的。另一方面,如果使用 bit fields.
可以减少内存消耗
struct Foo {
bool foo2 : 1;
bool foo3 : 1;
};
我对在结构中使用多个布尔值有疑问。
我有一个结构
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
作为一个整体之外具有某种意义时才使用它(例如,如果它们都是应该一起传输或保存到外部文件的所有设置),否则移动foo2
和 foo3
到 MainFoo
。
除此之外,使用都是正确的。另一方面,如果使用 bit fields.
可以减少内存消耗struct Foo {
bool foo2 : 1;
bool foo3 : 1;
};