C++ 静态断言(static_assert)

简介:
c++0x 中引入了static_cast 这个关键字。可以在 编译期间检测模版函数是不是正确。

下面是一个来自MSDN的简单范例:

static_assert(sizeof(void *) == 4, "64-bit code generation is not supported.");

该static_assert用来确保编译仅在32位的平台上进行,不支持64位的平台,该语句可以放在文件的开头处,这样可以尽早检查,以节省失败情况下的编译时间。

我们知道,C++现有的标准中,就有assert、#error两个设施,也是用来检查错误的,还有一些第三方的静态断言实现。

assert是运行期断言,它用来发现运行期间的错误,不能提前到编译期发现错误,也不具有强制性,也谈不上改善编译信息的可读性,既然是运行期检查,对性能当然是有影响的,所以经常在发行版本中,assert都会被关掉;

#error可看做预编译期断言,甚至都算不上断言,仅仅能在预编译时显示一个错误信息,它能做的不多

你可能感兴趣的:(c-c++)