"Все украдено до нас"(с) :) Это из библиотеки Loki:
можно использовать тот факт, что в C/C++ недопустимы массивы нулевой длины. Вдумайтесь в этот факт - проверка на ноль длины массива выполняется компилятором во время трансляции. Это то, что доктор прописал (первое письменное упоминание этого приема датируется хрониками в 1997 году)!
#define STATIC_CHECK(condition) { char dummy[ (condition) ? 1 : 0]; }
Этот макрос проверяет во время компиляции, что его аргумент не равен нулю. К примеру, код
STATIC_CHECK( sizeof(wchar_t)<=2 );