首页 新闻 会员 周边

C/C++如何实现静态断言?

0
悬赏园豆:200 [已解决问题] 解决于 2012-09-14 13:43

比如说:

S_ASSERT(sizeof(char) > sizeof(int)) 

会导致一个编译错误。

c++
嗷嗷的主页 嗷嗷 | 小虾三级 | 园豆:757
提问于:2012-09-14 13:28
< >
分享
最佳答案
1

如果是C++11的话,可以使用static_assert。

在static_assert之前,还有些其他方法可以来实现类似的功能。如这些宏:

#define STATIC_ASSERT_2(ex) \ do { typedef int ai[(ex) ? 1 : 0]; } while(0)

# define STATIC_ASSERT_3(ex) \ do { typedef int ai[(ex) ? 1 : -1]; } while(0)

#define STATIC_ASSERT_4(ex) \ switch(0) { case 0: case ex:; }

#define STATIC_ASSERT_5(ex) \ struct x { unsigned int v : ex; }

这行就会在编译期报错。 STATIC_ASSERT_1(sizeof(int) < sizeof(short))

收获园豆:200
眯妖 | 小虾三级 |园豆:820 | 2012-09-14 13:37
其他回答(2)
0

哼哼。。哼哼哼。。

mumuliang | 园豆:213 (菜鸟二级) | 2012-09-14 13:41
0

怪不得 。呼唤嗷嗷呢 。。。。 

Lucky樱桃 | 园豆:126 (初学一级) | 2012-09-14 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册