gcc, g++编译时消除特定警告的方法

    在编译调试代码的时候,编译警告可以为我们定位到程序中的很多异常问题。gcc 编译器为我们提供了很多的编译选项:

-Wall 
会打开一些很有用的警告选项,建议编译时加此选项。具体如下:
           -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat 
           -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration 
           -Wcomment -Wformat -Wmain (only for C/ObjC and unless 
           -ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses 
           -Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point 
           -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 
           -Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above) 
           -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value 
           -Wunused-variable 

-W 
-Wextra 
打印一些额外的警告信息。

-w 
禁止显示所有警告信息。

-Wshadow 
当一个局部变量遮盖住了另一个局部变量,或者全局变量时,给出警告。很有用的选项,建议打开。 -Wall 并不会打开此项。

-Wpointer-arith 
对函数指针或者void *类型的指针进行算术操作时给出警告。也很有用。 -Wall 并不会打开此项。

-Wcast-qual 
当强制转化丢掉了类型修饰符时给出警告。 -Wall 并不会打开此项。

-Waggregate-return 
如果定义或调用了返回结构体或联合体的函数,编译器就发出警告。

-Winline 
无论是声明为 inline 或者是指定了-finline-functions 选项,如果某函数不能内联,编译器都将发出警告。如果你的代码含有很多 inline 函数的话,这是很有用的选项。

-Werror 
把警告当作错误。出现任何警告就放弃编译。

-Wunreachable-code 
如果编译器探测到永远不会执行到的代码,就给出警告。也是比较有用的选项。

-Wcast-align 
一旦某个指针类型强制转换导致目标所需的地址对齐增加时,编译器就发出警告。

-Wundef 
当一个没有定义的符号出现在 #if 中时,给出警告。

-Wredundant-decls 
如果在同一个可见域内某定义多次声明,编译器就发出警告,即使这些重复声明有效并且毫无差别。

=========================================================================

-------------------------------------------------------------------------------------------------------------------------------------

=========================================================================

    但如果编译警告提示等级太低,有时候就会出现很多并不影响程序运行的警告信息,比如:-Wunused-but-set-variable 警告,它表示一个变量定义了,但是该变量没有被实际应用到。太多的警告容易在编译的时候出现“刷屏”,在gcc 和g++ 中也可以屏蔽某一种编译警告,在警告前面添加-Wno就可以了。假如我们需要屏蔽-Wunused-but-set-variable 这一类警告,可以这样添加编译选项

    -Wno-unused-but-set-variable

 

​​​​​​​

 

  • 14
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_wen01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值