7 C++11新增的其他功能
7.4 杂项
C99引入了依赖于实现的拓展整型,C++11继承了这种传统。在使用128位整数的系统中,可使用这样的类型。在C语言中,扩展类型由头文件stdint.h支持,而在C++中,为头文件cstdint。
C++11提供了一种创建用户自定义字面量的机制:字面量运算符(literal operator)。使用这种机制可定义二进制字面量,如101001b,相应的字面量运算符把他转换为整数值。
C++提供了调试工具assert。这是一个宏,它在运行阶段对断言进行检查,如果为true,则显示一条消息,否则调用abort()。断言通常是程序员认为在程序的某个阶段应为true的东西。使用assert的一个例子如下:
#include<stdio.h>
#include<assert.h>
int main(void){
int x=1;
assert(x!=1);
return 0;
}
输出如下:
test: test.c:6: main: Assertion `x!=1' failed.
Aborted (core dumped)
C++11还新增了关键字static_assert,可用于在编译阶段对断言进行测试。这样做的主要目的在于,对于在编译阶段(而不是运行阶段)实例化的模板,调试起来将更简单。