Я хочу определить макрос, если условие с sizeof
истинно и ничего не делать (но все же компилировать), если оно ложно. Если препроцессор поддерживает sizeof
, он будет выглядеть так:
#if (sizeof(void*) <= sizeof(unsigned int)) // what goes here?
# define POINTER_FITS_INTO_UINT
#endif
Есть несколько страниц (например, http://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/), которые объясняют, как сделать утверждение времени компиляции на sizeof
(и не скомпилировать, если оно не выполнено), но я не вижу способа расширить этот подход к тому, что я хочу.