我想将编译时断言添加到以下 C++ 代码中(使用 Visual C++ 9 编译):
//assumes typedef unsigned char BYTE;
int value = ...;
// Does it fit into BYTE?
if( 0 <= value && value <= UCHAR_MAX ) {
BYTE asByte = static_cast<BYTE>( value );
//proceed with byte
} else {
//proceed with greater values
}
问题是UCHAR_MAX
and BYTE
是独立的typedef
当此代码被移植时,它们可能会不同步并且代码将被破坏。所以我想做这样的事情:
compileTimeAssert( sizeof( BYTE ) == sizeof( UCHAR_MAX ) );
但 VC++9 在编译时会产生“负下标”错误 -sizeof( UCHAR_MAX )
恰好是 4,而不是 1。
如何实现我想要的编译时检查?
将“值”与 std::numeric_limits::max() 而不是 UCHAR_MAX 进行比较
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)