Утверждение во время компиляции для размеров типов данных

Я хотел бы выполнить во время компиляции проверку размеров типов данных в проекте C / C ++ и выявить ошибку при неожиданном несоответствии. Simple

#if sizeof foo_t != sizeof bar_t

не компилируется - утверждает, что sizeof не является правильной константой времени компиляции.

Желаемый набор платформ - как минимум Visual C ++ с Win32 / 64 и GCC на x86 / amd64.

РЕДАКТИРОВАТЬ : время компиляции, не обязательно препроцессор. Просто не ошибка времени выполнения.

РЕДАКТИРОВАТЬ2 : код предполагает, что wchar_t составляет 2 байта. Мне нужна ошибка компиляции, если она случайно скомпилирована с 4-байтовым wchar.

12
задан Brian Mains 2 February 2012 в 01:45
поделиться