C编译警告

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

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

  • 有无符号数在作比较;

  • 宏定义不正确;

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

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

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

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 ptr

if(ptr == 'a') {
    // do something
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值