sha*_*oth 3 c++ portability visual-c++
我想将编译时断言添加到以下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
}
Run Code Online (Sandbox Code Playgroud)
问题是UCHAR_MAX并且BYTE是独立typedef的,当移植此代码时,它们可能会失去同步而代码将会中断.所以我想做这样的事情:
compileTimeAssert( sizeof( BYTE ) == sizeof( UCHAR_MAX ) );
Run Code Online (Sandbox Code Playgroud)
但VC++ 9在编译时会产生"负下标"错误 - sizeof( UCHAR_MAX )恰好是4,而不是1.
如何实现我想要的编译时检查?
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |