C/C++如何实现静态断言?
0
最佳答案
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)) 补充一种办法: #define COMPILE_ASSERT(x) \ enum {CAT_TOKEN (o, __LINE__) = 1 / !!(x) }; |
|