多语言展示
当前在线:1931今日阅读:31今日分享:25

C语言警告-Wunused-but-set-variable的消除

今天进行移植工作,以前编译好好的C语言程序,突然爆出好多警告。作为一个有洁癖的码农,不但要消灭所有的错误,还要消灭所有的警告。顺手将解决问题的方法记录下来,如果帮到你,记得顶我哦~~
工具/原料
1

gcc4.6或以上版本

2

测试例程

方法/步骤1
1

首先说下问题发生的情况,当我们在函数中定义一个变量,我们给这个变量赋初值,或者这个变量等于另一个函数调用的返回值,但是在我们的函数结束之前,这个值并没有用于使用,换句话说,这个变量是没有实际意义的,完全可以去掉不用。这种问题,gcc4.6以上的版本就会发现。而我遇到的问题也恰为此种,后面会有具体例子说明。遇到这个问题,我想很多人都一样,首先bai_du一下,我也是这么做的,如果找到了满意的方法,也许就没有此文了。所以我自己研究了一下。END

方法/步骤2

再来说下问题出现的gcc版本。我自己使用的版本是4.8.2。从网上看,也有朋友使用4.6就遇到了这个。相信本文的方法可以用于4.6以上的版本。gcc –version可以查询gcc版本,如图所示:END

方法/步骤3

为了方便解释,简单准备了一个测试程序,如下所示。如在步骤1中所说,main中的变量a,声明、赋值,但是没有实际使用,就是完全没有存在的必要。END

方法/步骤4

这种情况下,如果我们简单用gcc编译,不加任何编译选项,那么是不会报警告的。END

方法/步骤5

但是程序猿编码时往往都要用很多编译选项,以帮助我们发现一些明显的问题,减少后期调试的复杂度,现在我们使用-Wall来变一下,-Wall会将编译过程中遇到的警告全部列出来:END

方法/步骤6

上面的警告显示-Wunused-but-set-variable,意思就是变量没有被使用。要是我们不想看到这样的警告,则在编译中加入 –Wno-unused-but-set-variable即可。再来编译,就不会产生warning了。END

注意事项

gcc的这些警告本是为了帮助我们发现低级问题的,如果不让warning打印,那么必然要承担相应的风险,不过本文的这种warning只是声明未使用,并无大碍,所以一般不会造成问题。

推荐信息