Если ваша цель - остановить компиляцию, если тип данных имеет неправильный размер, будет полезен следующий метод:
struct _check_type_sizes
{
int int_is_4_bytes[(sizeof(int) == 4) ? 1 : -1];
int short_is_2_bytes[(sizeof(short) == 2) ? 1 : -1];
};
(Функция sizeof () интерпретируется здесь компилятором, а не препроцессором.)
Основным недостатком этого метода является то, что ошибка компилятора не очень очевидна. Убедитесь, что вы написали очень четкий комментарий.