外部ライブラリを使用せずに 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)); } // Define the rest of the bit operators here
これにより、次のことが可能になります。 | のような演算子を使用します。フラグを結合するには:
// Declare a variable of type AnimalFlags AnimalFlags seahawk; // Set the flags using the | operator seahawk = CanFly | EatsFish | Endangered;
これにより、型の安全性とフラグの意図された使用法の両方が保証されます。
以上が外部ライブラリを使用せずに C で Enum フラグを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。