静态断言即,在编译时期就能发现问题所在,而不用等到运行时期(因为有些时候并不是所有断言 一次就能运行出来)
c++ 11 & BOOST 库 有类似的方法。
这里搞一个简单的 自检方式
/*除零异常方式*/
#define my_assert_static(e) do { enum { my_assert_static__ = 1/int(e)}; } while (0)
/*测试*/
void test_assert()
{
my_assert_static(sizeof(int) == sizeof(long)) ;
}
/////////////////////////////////
/*如果是支持c++11 以上*/
template<class T, class U>
void use_compare_assert(T & t, U & u)
{
static_assert(sizeof(t) == sizeof(u), "Lhs and rhs must have same width !!!");
}
/*测试*/
void test_assert_cplusplus11()
{
int i = 0;
double d = 0;
use_compare_assert(i, d);
}