| #define DEFINE_UNSIGNED_ENUM(suffix, enum_type) \ |
| enum class enum_##suffix : enum_type{Case1 = 200, Case2, Case3}; \ |
| enum_##suffix var1_##suffix = enum_##suffix ::Case1; \ |
| enum_##suffix var2_##suffix = enum_##suffix ::Case2; \ |
| enum_##suffix var3_##suffix = enum_##suffix ::Case3; \ |
| enum_##suffix var_below_##suffix = static_cast<enum_##suffix>(199); \ |
| enum_##suffix var_above_##suffix = static_cast<enum_##suffix>(203); |
| |
| #define DEFINE_SIGNED_ENUM(suffix, enum_type) \ |
| enum class enum_##suffix : enum_type{Case1 = -2, Case2, Case3}; \ |
| enum_##suffix var1_##suffix = enum_##suffix ::Case1; \ |
| enum_##suffix var2_##suffix = enum_##suffix ::Case2; \ |
| enum_##suffix var3_##suffix = enum_##suffix ::Case3; \ |
| enum_##suffix var_below_##suffix = static_cast<enum_##suffix>(-3); \ |
| enum_##suffix var_above_##suffix = static_cast<enum_##suffix>(1); |
| |
| DEFINE_UNSIGNED_ENUM(uc, unsigned char) |
| DEFINE_SIGNED_ENUM(c, signed char) |
| DEFINE_UNSIGNED_ENUM(us, unsigned short int) |
| DEFINE_SIGNED_ENUM(s, signed short int) |
| DEFINE_UNSIGNED_ENUM(ui, unsigned int) |
| DEFINE_SIGNED_ENUM(i, signed int) |
| DEFINE_UNSIGNED_ENUM(ul, unsigned long) |
| DEFINE_SIGNED_ENUM(l, signed long) |
| DEFINE_UNSIGNED_ENUM(ull, unsigned long long) |
| DEFINE_SIGNED_ENUM(ll, signed long long) |
| |
| int main(int argc, char const *argv[]) { return 0; } |