Я хочу определить макрос, если условие, связанное с 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
(и не выполнить компиляцию в случае сбоя), но я не вижу способ расширить этот подход до того, что я хочу.