逻辑是调用具有一些输入值的函数,函数返回多个布尔变量。
在未来,布尔变量可以扩展。
function(inp1,inp3,bool1,bool2... booln)
我决定将布尔变量打包到结构
中function(inp1,inp3,struct bool_flags)
请帮助我进行有效的设计
答案 0 :(得分:1)
我不确定你要在这里完成什么,因为问题不清楚,但我有一个想法。您可以将所有布尔值打包为uint
或ulong
。然后,变量的每个位都是一个布尔值。您可以像这样读取布尔值:
uint bools;
bool bool0 = bools & 1;
bool bool1 = (bools >> 1) & 1;
etc...
你可以像这样编写布尔值:
bools |= bool0;
bools |= bool1 << 1;
etc...
这通过逻辑移位,和/或值来起作用。 C ++中的布尔值是1或0.因此,要读取,请将“容器”变量移至&
bool值。要写,请将bool值和|
移动到“容器”。
唯一的缺陷是int限制为32位,long是64位。如果需要,您可以创建一个int或long结构,以便更有效地打包。祝你好运!