c语言常见warning的消除方法及重要性

消除编译过程中出现warning告警的重要性

在编译代码过程中,要注意对warning告警的消除,虽说一般warning是不会影响编译结果的,但是由warning引起的问题一般不好查找原因,所以在提交代码或者自己写代码的时候,一定要尽量的消除warning告警。一面以一些实例来说明消除warning告警的重要性:

  1. warning: suggest parentheses around assignment used as truth value [-Wparentheses]

这条告警作用很大:提示你在if语句中使用"="的真正意图,是想赋值还是做判断,例如下面的代码就写错了:if语句明显是想根据变量的值做一个判断,却用了"=",而宏AF_INET不等于0,导致一定会进入这个if语句的body部分。可能当时没有问题,若以后代码扩展,支持了AF_INET6地址族,就会出一些意想不到的问题。

modify before:
if(tmp_nbr->ident.address->family = AF_INET)
{
    list_ptr->nbr_ipaddr.vrfid = 0;
    list_ptr->nbr_ipaddr.family = AF_INET;
    list_ptr->nbr_ipaddr.prefixlen = tmp_nbr->ident.address->prefixlen;
    list_ptr->nbr_ipaddr.u.prefix4 = (PSP_ipv4Address_t)tmp_nbr->
                                    ident.address->u.prefix4.s_addr;
}

modify after:
if(tmp_nbr->ident.address->family == AF_INET)
{
    list_ptr->nbr_ipaddr.vrfid = 0;
    list_ptr->nbr_ipaddr.family = AF_INET;
    list_ptr->nbr_ipaddr.prefixlen = tmp_nbr->ident.address->prefixlen;
    list_ptr->nbr_ipaddr.u.prefix4 = (PSP_ipv4Address_t)tmp_nbr->
                                    ident.address->u.prefix4.s_addr;
}

猜你喜欢

转载自blog.csdn.net/weixin_43722423/article/details/85204110