Можно довольно много языковых конструкций использовать для этих целей. Особенно тех, правильность которых зависит от значений целочисленных выражений. switch, например, можно использовать с дублирующимися метками. Да много чего ещё.
А вот в С++ есть такая штука как STATIC_ASSERT, реализацию которого можно найти, например, в boost (А как утвердят новый стандарт -это будет часть языка).
И можно писать в любом месте программы так:
Код
BOOST_STATIC_ASSERT(sizeof(A) < 256)
Если условие итненно - всё нормально, ложно - ошибка компиляции.
Я лично именно BOOST_STATIC_ASSERT использую в таких случаях (и пишу на С++ соответственно).