编译时断言

运行时断言大家都用过,但如果想当某个条件不满足时在编译时就让程序编译不通过,即编译时断言(不能产生副作用)是什么样子的呢。可参考如下:


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);


发布了44 篇原创文章 · 获赞 7 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章