博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言静态断言
阅读量:6093 次
发布时间:2019-06-20

本文共 899 字,大约阅读时间需要 2 分钟。

  在php中可以通过xdebug来显示详细的错误信息,可以细化到哪个文件哪行代码引起的报错。在C语言里面也可以通过静态断言(assert)来使得调试代码更加方便。关于断言,可以作为一种很强大的调试方式或者程序运行时的错误诊断,但是断言也不是适合于各种地方,服务器软件和嵌入式程序一般不适用,断言会强制中断正在运行的程序,对于服务器等程序来说,将会是一个灾难。加上,断言会加剧CPU 的负载,其中会调用一些函数。

  先看下面代码

void main(){    //动态分配1字节内存    char *p = (char *)malloc(sizeof(char));    *p = 'h';}

  上面代码就是给指针变量p 动态分配1字节内存 ,然后把字符h赋值给指针变量p。但是会有一个问题,假如内存分配失败 ,则 *p = 'h' 会出错(空指针无法赋值)

  可以加上静态断言来解决此问题

1 #include
2 #include
3 #include
4 5 //assert 一般用于错误调试等功能 6 void main() 7 { 8 //动态分配1字节内存 9 char *p = (char *)malloc(sizeof(char));//malloc分配内存失败的时候返回null10 assert(p!=NULL); //当p!=NULL成立是正常,否则会报出详细的错误信息11 *p = 'h';12 13 printf("%c",*p);14 }

  

  如果我们想关闭静态断言的效果,可以直接使用一个开关来处理 

1 #define NDEBUG //关闭静态断言的开关2 3 #include
4 #include
5 #include

  注意:此开关需在定义在  #include<assert.h> 之前

转载地址:http://yymwa.baihongyu.com/

你可能感兴趣的文章
弹出菜单
查看>>
高德地图多marker聚合API
查看>>
IPv4 向 IPv6 过渡安全问题不可小觑
查看>>
Linux运维实战之Apache服务器的高级配置(虚拟主机、status)
查看>>
DHCP overview
查看>>
我的友情链接
查看>>
linux 系统无法启动的基本解决方法
查看>>
老男孩博客园杨海潮MySQL--MySQL机构逻辑1
查看>>
Linux network adapter configuration
查看>>
决心书
查看>>
阿里云产品
查看>>
ESXi磁盘块大小设立
查看>>
我的友情链接
查看>>
elasticsearch 使用事项
查看>>
sqlserver中text与Varchar(max)的区别
查看>>
Docker私有仓库Registry的搭建验证
查看>>
企业信息化-之成立信息化专项小组
查看>>
jQuery 知识点总结
查看>>
php 正则对于中文汉字字符的提取
查看>>
微服务架构—优雅停机方案
查看>>