条件sizeof
が true の場合はマクロを定義し、false の場合は何も実行しません (ただし、コンパイルは行います)。プリプロセッサが をサポートし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