我有一个关于在结构中使用多个布尔值的问题。
我有一个结构
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;
}
最后在另一个班级我检查
if(Foo.foo2)
{
//Do something
}
if(Foo.foo3)
{
//Do Something
}
所以我的问题是,是否还有其他更好的方法来检查这些。我尝试使用Dword,但不确定我是否理解它,但它只是检查了最后一个布尔状态,因此无法在另一个类中一次检查每个布尔值。有什么建议吗?是仅仅为bool使用结构的一个好习惯?如果没有,还有其他更好的方法吗?
非常感谢
答案 0 :(得分:1)
这主要取决于你的问题。简而言之,仅当Foo
结构在整个MainFoo
之外具有某种含义时才使用foo2
结构(例如,如果它们都是应该全部一起传输或外部保存到文件中的设置),否则移动foo3
和MainFoo
至struct Foo {
bool foo2 : 1;
bool foo3 : 1;
};
。
除此之外,使用是正确的。另一方面,如果使用bit fields,则可以减少内存消耗。
<a href="JavaScript: OpenPayPalWindow('https://www.paypal.com/cgi-bin/webscr?cmd=_cart&business=businessemail&item_name=' + escape('{$article->mArticle.name}') +'&amount={$article->mArticle.price}&add=1&return=urlshopping&currency_code=USD&cancel_return=urlshopping')">
Add to basket
</a>