> 백엔드 개발 > C++ > 외부 라이브러리 없이 C 열거형을 플래그로 어떻게 사용할 수 있습니까?

외부 라이브러리 없이 C 열거형을 플래그로 어떻게 사용할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-13 00:35:15
원래의
712명이 탐색했습니다.

How Can I Use C   Enums as Flags Without External Libraries?

외부 라이브러리 없이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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