Niedawno natknąłem się na kilka przykładów "flag" w C i C++, i nie do końca rozumiem, jak działają. Po patrząc na niektóre kodu źródłowego Zauważyłem, że często wartości flagi są zdefiniowane w systemie szesnastkowym, takie jak:Jak flagi działają w C?
FLAG1 = 0x00000001,
FLAG2 = 0x00000010,
Moje intuicyjny sugeruje, że wartości te są łączone. Czy flagi działają, łącząc wszystkie wartości flag w jeden int? Gdybym użył obu tych metod, takich jak FLAG1 | FLAG2
, wynik byłby następujący: 0x00000011
?
Czy muszę tworzyć teksty stałe z przesunięciami bitowymi czy mogę użyć rosnąco całkowitymi odczuwalna:
FLAG1 = 1;
FLAG2 = 2;
Dziękuję, że to bardzo proste, wygrywasz. –
* wygrywasz * - Naprawdę? Jeśli zostanie opublikowana dobra odpowiedź, powiedziałbym, że ** wszyscy wygrywają. I * naprawdę * mam nadzieję, że PIERWSZY, DRUGI itd. Są po prostu złymi przykładowymi imionami, a nie sugestią, aby ogłosić te stałe raz i ponownie je wykorzystać. 'x = SECOND | CZWARTE 'nie jest tak czytelne jak' x = TEXTUREFLAGS_POINTSAMPLE | TEXTUREFLAGS_TRILINEAR'. –
"Wygrywasz" jak w "dziękuję" "wspaniała odpowiedź", akceptuję twoje ". Myślę, że nazywanie było dorozumiane. –