build time asserts can be defined in C macros with some tricks. The error messages are slightly misleading, but when people look at the source code it is usually clear what is happening.
#define ASSERT_BUILD(x) \ do { char array[(x) ? 1 : -1]; (void)array; } while(0)
static char foo[10]; ASSERT_BUILD(sizeof(foo) >= 10);