Стандарт C не предусматривает способа сообщения значений констант перечисления в макросах препроцессора или других методах времени компиляции. Однако можно проверить, что значение находится в требуемом диапазоне.
Начиная с C 2011, вы можете использовать _Static_assert
для проверки констант перечисления:
enum { a, b, c, d, e };
_Static_assert(e <= 3, "Enumeration constant exceeds 3.");
До C 2011, вы можете проверять тесты различными способами, например:
enum { a, b, c, d, e };
int FailIfSizeMismatches[1]; // Define array with good size.
int FailIfSizeMismatches[e <= 3]; // Define with conflicting size if test fails.
(В C ++ замените _Static_assert
на static_assert
.)