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

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

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

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

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

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

gcc的这些警告本是为了帮助我们发现低级问题的,如果不让warning打印,那么必然要承担相应的风险,不过本文的这种warning只是声明未使用,并无大碍,所以一般不会造成问题。
c语言版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_309633.html