静态断言
1. 断言
定义:断言是程序测试的一种常用手段,通过将一个返回值总是为真的判断表达式放在语句中,用于排除一些逻辑上的错误。
语法:
assert(表达式)
:如果表达式为真,程序正常运行。如果为假,程序将会终止运行。- 头文件:
<cassert>
/<assert.h>
EG:
#include <cassert>
int main(void){
int a;
int b;
cin >> a;
cin >> b;
assert(b!=0); // 如果b!=0,程序正常运行。否则,程序中断。
cout << "a / b= " << a / b << endl;
return 0;
}
2. 静态断言
assert
是一个运行时断言
,也就是说,只有在程序运行时才能够执行。但有时我们需要在程序运行之前就进行一些逻辑判断,例如当前平台是32位还是64位,这时就需要用到静态断言。
特点:
- 可以在程序编译阶段就进行检查。
- 使用时不用引入头文件。
- 可以自定义违反断言时的提示消息。
语法
static_assert(表达式, 警告信息);
- 表达式:因为要在编译阶段就进行检查,所以必须是一个
常量表达式
,返回一个bool值。 - 警告信息:是一个字符串,当表达式为false时进行警告。
EG:
// assert.cpp
#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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现