Có thể nhận giá trị của một thành viên enum tại thời gian biên dịch?Có thể nhận giá trị của một thành viên enum tại thời gian biên dịch?
Trong thực tế, tôi muốn để có thể làm điều gì đó như thế này:
enum {
FOO_FIRST = -1,
FOO_A,
FOO_B,
FOO_C,
FOO_LAST
};
#if FOO_LAST > 10
//...
#else
//..
#endif
Tôi biết rằng cpp
không biết về các biến, cú pháp xấu, vv; chỉ những thứ bắt đầu bằng #
(phải)? nhưng các thành viên của một enum có kích thước cố định và không thể thay đổi giống như giá trị 10 (hằng số nguyên) và trình biên dịch biết kích thước và giá trị của nó. Vì vậy, không có bất kỳ khả năng để làm so sánh như vậy (như tôi đã làm ở trên)? gcc-extensions cũng rất được đánh giá cao.
nó chỉ là một cố gắng để không viết lại tất cả các liệt kê của tôi bằng cách sử dụng #define
s và không dành thời gian của tôi làm một số thay đổi macro.
Bạn đang cố gắng làm gì bên trong khối '# if'? – ecatmur
không thể nghĩ ra bất kỳ trường hợp sử dụng thực tế nào trong trường hợp này hữu ích .. –
[enum và #define] (http://stackoverflow.com/questions/136946/difference-between-enum-and-define-statements) – SparKot