我创建了一个名为 panel 的结构,它在 OpenGL 中渲染,工作正常,但我想将它添加到面板:
int flags;
然后我在标题中定义它:
#define PANEL_TITLE 0x0001
#define PANEL_MOVEABLE 0x0002
#define PANEL_SHADOW 0x0003
像这样使用标志值:
panel.flags = PANEL_TITLE | PANEL_MOVEABLE;
而不是很多:(看起来不太好)
bool panel_has_title;
bool panel_moveable;
bool panel_shadow;
然后检查 bool 值,而不是我可以只使用单个 int 来获得相同的结果。我已经阅读了很多使用标志的开源东西,就像上面的代码一样。但是我的问题是它不起作用,当我检查标志时:
panel.flags = PANEL_TITLE | PANEL_MOVEABLE;
if(panel.flags & PANEL_TITLE) //this one works
{
}
if(panel.flags & PANEL_MOVEABLE) //this one doesn't work
{
//not gets called
}
编辑:好的,现在我将其更改为
#define PANEL_TITLE 0x0002
#define PANEL_MOVEABLE 0x0004
#define PANEL_SHADOW 0x0008
它们又相交了吗?新问题是如果我设置
panel.flags = PANEL_TITLE;
然后它里面的每个函数都会被调用
if(panel.flags & PANEL_TITLE)
{
//called which is normal
}
if(panel.flags & PANEL_MOVEABLE)
{
//called ..
}
if(panel.flags & PANEL_SHADOW)
{
//called ..
}
正常吗?