C에서 플래그 열거형 사용자 정의
C에서 열거형(열거형)은 이산 값을 나타내는 강력한 도구입니다. 그러나 표준 열거형 구문에는 이를 플래그로 처리하는 기본 제공 메커니즘이 부족합니다. 이 문서에서는 외부 라이브러리에 의존하지 않고 C에서 플래그와 같은 열거형을 구현하는 방법을 살펴봅니다.
문제:
다음 예를 고려하세요.
enum AnimalFlags { HasClaws = 1, CanFly = 2, EatsFish = 4, Endangered = 8 }; int seahawkFlags = CanFly | EatsFish | Endangered;
비트별 OR 값을 열거형에 할당하려고 하면 int/enum 변환으로 인해 컴파일러에서 오류가 발생합니다. 불일치.
해결책:
해결책은 열거형에 대한 비트 연산자를 정의하는 데 있습니다.
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)); } // Define other operators as needed int seahawkFlags = animalFlags::CanFly | AnimalFlags::EatsFish | AnimalFlags::Endangered;
비트 연산자를 제공함으로써 열거형은 다음을 수행할 수 있습니다. 깃발과 같은 방식으로 조작될 수 있습니다. 또한 유형 안전성을 사용하면 유효한 플래그 조합만 열거형 변수에 할당됩니다.
위 내용은 외부 라이브러리 없이 C에서 플래그 열거형을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!