مكتبة التعداد العاكسة في وقت الترجمة مع بناء جملة نظيف، في ملف رأس واحد، وبدون تبعيات.
في C++ 11، يمكن استخدام كل شيء في وقت الترجمة. يمكنك تحويل التعدادات الخاصة بك، والتكرار فوقها، والعثور على الحد الأقصى لها، وفرض الاصطلاحات بشكل ثابت، وتمرير النتائج كوسائط قالب أو إلى وظائف constexpr
. كل الانعكاس متاح لاحتياجات البرمجة الوصفية الخاصة بك.
الواجهة هي نفسها بالنسبة لـ C++ 98 — كل ما عليك فعله هو استخدام معظمها في وقت التشغيل فقط. توفر هذه المكتبة تعدادات ذات نطاق وحجم، وهو شيء غير مدمج في C++ 98.
راجع صفحة المشروع للحصول على الوثائق الكاملة.
ما عليك سوى إضافة enum.h
إلى مشروعك.
iostream
فقط. أكبر قيد هو أنه لا يمكن استخدام الماكرو BETTER_ENUM
داخل الفصل الدراسي. يبدو أن إزالة هذا أمر صعب. يوجد حل بديل باستخدام typedef
(أو C++ 11 using
):
BETTER_ENUM (SomePrefix_Color, uint8_t , Red, Green, Blue)
struct triplet {
typedef SomePrefix_Color Color;
Color r, g, b;
};
triplet::Color color;
ومع ذلك، يمكنك استخدام BETTER_ENUM
داخل مساحة الاسم.
يحتوي الماكرو على حد بسيط يبلغ 64 من الثوابت المعلنة. يمكنك تمديده باتباع هذه التعليمات. في النهاية، عدد الثوابت محدود بعدد وسيطات الماكرو الأقصى للمترجم الخاص بك.
في بعض الحالات، من الضروري إضافة بادئة للثوابت مثل Channel::Red
بعلامة +
لترقيتها بشكل صريح لكتابة Channel
. على سبيل المثال، إذا كنت تقوم بإجراء مقارنة:
channel == +Channel::Red
في msvc، قد تحتاج إلى تمكين التحذير C4062 للحصول على التحقق من شمولية حالة switch
.
تم تطوير النسخة الأصلية من المكتبة من قبل المؤلف في شتاء 2012-2013 في Hudson River Trading، كبديل لمولد قديم يسمى BETTER_ENUM
.