博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C编译警告
阅读量:6934 次
发布时间:2019-06-27

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

使用编译选项把警告给避免了,这可能隐藏掉一些潜在的致命错误。实际工作中遇到了很多的警告,主要发现以下几类:

  • 类在构建时,变量初始化的次序颠倒,在某些应用场合这也是容易导致一些不易察觉的错误;

  • 有无符号数在作比较;

  • 宏定义不正确;

  • 定义了没有使用的变量,如果有很多条件宏定义的时候,这个处理要细致一些;

  • 结构体和数组的初始化方式不正确,其实是错误的方式,却也只是警告;

  • 不小心书写代码引发的警告,有些其实也是错误,不过编译器不能识别出来,例如以下列举的例子;

if(ptr != NULL);  // 分号错误的添加    printf("[%s, %d] address: %p \n", __FUNCTION__, __LINE__, ptr);     //当然这里在程序运行时,如果ptr为NULL会引发段错误。若是其它的一些操作,可能一下子根本查不出错误的所在。
if(a=1) { //实际上代码的本意是想表达if(a==1),这样写是潜在的错误,其它的逻辑根本执行不到。    /*do something*/}
  • 函数的形参定义了,在函数体内却没有使用到;

  • 误把变量指针值当作指向的数据。

char *prt = NULL;// assign value to ptrif(ptr == 'a') {    // do something}

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

你可能感兴趣的文章
java rest的说明
查看>>
Angular在页面加载很慢的时候,会出现双花括号的问题
查看>>
JS判断客户端是否是iOS或者Android手机移动端
查看>>
我的友情链接
查看>>
清除浏览器自动填充用户名、密码框
查看>>
HTML5 meta viewport参数详解
查看>>
C#中==、Equals、ReferenceEquals的区别是什么
查看>>
echo的特殊用法-字符颜色控制
查看>>
linux系统inittab文件丢失故障
查看>>
clean code
查看>>
程序员与HR博弈之:有城府的表达你的兴趣爱好
查看>>
vm虚拟机导入时候找不到ip
查看>>
Apache配置——通过rewrite限制某个目录
查看>>
简单记事本和简单四则运算计算器源代码(*.h *.cpp main.cpp)
查看>>
Go中运用chan的简单案例
查看>>
busybox工具Linux系统、flash_tools烧录工具
查看>>
RHEL5.5cobbler的配置
查看>>
centos: fail2ban
查看>>
hello,大家好,今后我教大家学java
查看>>
C++对象模型学习——Data语意学
查看>>