编程语言
911
静态断言
静态断言
static_assert
,所谓静态就是在编译时就能够进行检查的断言
,使用时不需要引用头文件
。静态断言的另一个好处是,可以自定义违反断言时的错误提示信息。
静态断言使用起来非常简单,它接收两个参数:
- 参数1:断言表达式,这个表达式通常需要返回一个 bool值
- 参数2:警告信息,它通常就是一段字符串,在违反断言(表达式为false)时提示该信息
一个判断Linux是否为32位平台的小程序
#include <iostream> using namespace std; int main() { static_assert(sizeof(long) == 4, "错误, 不是32位平台..."); cout << "64bit Linux 指针大小: " << sizeof(char*) << endl; cout << "64bit Linux long 大小: " << sizeof(long) <<endl; return 0; }
g++ assert.cpp -std=c++11 assert.cpp: In function ‘int main()’: assert.cpp:6:5: error: static assertion failed: 错误, 不是32位平台... static_assert(sizeof(long) == 4, "错误, 不是32位平台...");
注意
: 由于静态断言的表达式是在编译阶段进行检测,所以在它的表达式中不能出现变量,也就是说这个表达式必须是常量表达式。