ไลบรารี enum เวลาคอมไพล์แบบสะท้อนพร้อมไวยากรณ์ที่ชัดเจนในไฟล์ส่วนหัวเดียวและไม่มีการขึ้นต่อกัน
ใน 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
ห้องสมุดเวอร์ชันดั้งเดิมได้รับการพัฒนาโดยผู้เขียนในช่วงฤดูหนาวปี 2555-2556 ที่ Hudson River Trading เพื่อทดแทนเครื่องกำเนิดไฟฟ้ารุ่นเก่าที่เรียกว่า BETTER_ENUM