gcc, g++编译时消除特定警告的方法
来源:互联网 发布:c语言培训 编辑:程序博客网 时间:2024/05/17 01:09
在编译调试代码的时候,编译警告可以为我们定位到程序中的很多异常问题。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
- gcc, g++编译时消除特定警告的方法
- gcc或clang中消除特定警告的方法
- gcc或clang中消除特定警告的方法
- 消除performSelector:警告的方法
- GCC编译时的警告说明
- 消除由于使用gcc编译选项-Wunused-parameter而导致的 warning: "unused parameter xxxx"警告
- 消除编译警告!!!
- C4653编译警告消除
- gcc/g++ 编译时的一个优化
- Xcode关于警告AutomaticPreferredMaxLayoutWidth的消除方法
- 强制消除Xcode警告的方法
- Xcode关于警告AutomaticPreferredMaxLayoutWidth的消除方法
- gcc g++编译时警告:"xxxx" 将随后被初始化_解决方法
- keil中忽略特定警告的方法
- gcc g++ 编译有用的
- G++ GCC的编译过程
- gcc 常见的编译错误,警告总结
- GCC编译警告选项的学习
- LIS-hdu1087
- Retrofit2 源码分析
- ThreadLocal源码探究(Android版)
- LeetCode 278. First Bad Version
- 前端基础 -- HTTP协议简述
- gcc, g++编译时消除特定警告的方法
- 第二十六课 从Lua调用C
- 跨域提示无法接受,最后发现是datatype:’jsonp’格式有问题
- 写个Python程序上下班抢个顺风单
- 算法分析与设计课程(11):【leetcode】Gray Code
- linux下zookeeper的安装
- jQuery实现获取年月日的一些方法总结
- 查找算法
- JAVA源码学习--String