OpenGL でレンダリングする panel という構造を作成しましたが、正常に動作しますが、これを panel に追加したいと思います:
int flags;
次に、ヘッダーでこれを定義します:
#define PANEL_TITLE 0x0001
#define PANEL_MOVEABLE 0x0002
#define PANEL_SHADOW 0x0003
次のように flags 値を使用するには:
panel.flags = PANEL_TITLE | PANEL_MOVEABLE;
たくさんあるのではなく:(これは良くありません)
bool panel_has_title;
bool panel_moveable;
bool panel_shadow;
次に、ブール値を確認します。代わりに、単一の 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 ..
}
それは正常ですか?