외부 라이브러리 없이 C에서 Enum을 플래그로 사용
C#에서 [Flags]를 통해 사용할 수 있는 것처럼 열거형을 플래그로 처리하는 기능 속성은 값의 비트 조합을 나타내는 편리한 기능입니다. C에서 이 기능을 구현하려면 약간 다른 접근 방식이 필요합니다.
이를 달성하기 위한 한 가지 방법은 열거형에 대한 비트 연산자를 정의하여 플래그 값을 결합하는 유형에 안전한 방법을 제공하는 것입니다. 수행 방법은 다음과 같습니다.
enum AnimalFlags { HasClaws = 1, CanFly = 2, EatsFish = 4, Endangered = 8 }; inline AnimalFlags operator|(AnimalFlags a, AnimalFlags b) { return static_cast<AnimalFlags>(static_cast<int>(a) | static_cast<int>(b)); }
필요에 따라 추가 연산자(예: &, ^)를 정의합니다. 열거형 범위가 int 범위를 초과하는 경우 이에 따라 캐스팅 작업을 조정하세요.
이 접근 방식을 사용하면 이제 열거형 값을 플래그로 사용하여 유형 안전성을 보장할 수 있습니다. 예:
struct Animal { AnimalFlags flags; ... }; int main() { Animal seahawk; seahawk.flags = CanFly | EatsFish | Endangered; // seahawk.flags = HasMaximizeButton; // Compile error ... }
이를 통해 플래그 값을 안전하게 결합할 수 있으며 창 플래그 HasMaximizeButton을 동물의 플래그에 할당하는 것과 같은 잘못된 할당을 방지할 수 있습니다.
위 내용은 외부 라이브러리 없이 C 열거형을 플래그로 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!