> 백엔드 개발 > C++ > 외부 라이브러리 없이 C에서 플래그 열거형을 구현하는 방법은 무엇입니까?

외부 라이브러리 없이 C에서 플래그 열거형을 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 01:32:09
원래의
329명이 탐색했습니다.

How to Implement Flag Enums in C   without External Libraries?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿