編譯時斷言

運行時斷言大家都用過,但如果想當某個條件不滿足時在編譯時就讓程序編譯不通過,即編譯時斷言(不能產生副作用)是什麼樣子的呢。可參考如下:


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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章