運行時斷言大家都用過,但如果想當某個條件不滿足時在編譯時就讓程序編譯不通過,即編譯時斷言(不能產生副作用)是什麼樣子的呢。可參考如下:
1, 參考linux內核靜態斷言
/* Force a compilation error if condition is true */
#ifdef WIN32
#define BUILD_BUG_ON(e) {typedef char __static_assert_t[!(e)];}
#else
#define BUILD_BUG_ON(e) ((void)sizeof(char[1 - 2*!!(e)]))
#endif
2, boost庫也提供了靜態斷言,C++代碼可直接使用
#include <boost/static_assert.hpp>
BOOST_STATIC_ASSERT(sizeof(DiskChunkInfo_t) == 4400);