GCC 警告

-w -W
禁止/开启 编译警告的打印。这个警告不建议使用。大约2012年底,公司代码进行一次大重构,另外从Codeblock集成开发环境转向Makefile管理,Makefile里面默认使用了-w,因而代码一直没有警告,今年个别项目开发中发现一些代码笔误导致的BUG,而这些问题可以从编译警告中知道。前几个月,领导安排我来fix这些警告。为了自己,为了后人,不建议使用-w选项。

-Werror
将所有的警告当成错误处理。此选项谨慎建议加上。有的开源库警告很多(大名鼎鼎的ffmpeg也有很多警告呢),一一改掉耗时耗人力,必要性也不大。最后,公司代码加入了一个开源库,里面有很多代码警告,可能领导又安排我来fix了。

-Wfatal-errors
遇到第一个错误就停止,减少查找错误时间。建议加上。很多人遇到错误,没有意识到从第一个开始排查。不管是编译错误,还是程序运行出错,从最开始的错误查起,是个好的做法。

-Wall

开启“所有”的警告。强烈建议加上,并推荐该选项成为共识。如case语句没有default处理,有符号、无符号处理,未使用变量(特别是函数有大量未使用的数组,占用栈空间,测试发现,开辟一个未使用的8MB的数组,程序有coredump),用%d来打印地址,或%s打印int值,等,都可以发出警告。

-Wextra
除-Wall外其它的警告。建议加上。
在GCC编译时,加上必要的警告选项,可以避免很多低级错误引发的问题,我就在实际工程代码中遇到用“==”来赋值,我自己写的代码也出现过把“=”当成判断的。但是,有些错误却不是用GCC选项能解决的。比如一般项目都会自定义调试信息打印函数,但在处理可变参数类型时,往往不注意。可参考文章《一个可变参数类型检查的示例》。

原文地址:https://www.cnblogs.com/develon/p/10618804.html

时间: 2024-07-30 09:11:20

GCC 警告的相关文章

GCC警告选项例解

http://blog.csdn.net/hcx25909/article/details/7383716 GCC警告选项例解 程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵.遇到任意一条编译器警告都坚决不放过.有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint. 这个建议也很不错.不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此.那么我 们就从此放弃么?不,

【转】各个层次的gcc警告 #pragma GCC diagnostic ignored "-Wunused-parameter" --不错

原文网址:http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused));指定该变量为"未使用的".即使这个变量没有被使用,编译时也会忽略则个警告输出. 文件级:在源代码文件中诊断(忽略/警告) 语法: #pragma GCC diagnostic [error|warning|ignored] "-W&l

GCC 警告选项 -Werror

cc1plus: all warnings being treated as errors 解决办法:只需要找到相应的Makefile,去掉编译选项中的 -Werror 即可. --Werror 视警告为错误;出现任何警告即放弃编译. -Wall 会打开一些很有用的警告选项,建议编译时加此选项. -Wextra 打印一些额外的警告信息. -w 禁止显示所有警告信息. ============================================= #include <stdio.h>

一起talk GCC吧(第四回:GCC警告)

各位看官们,大家好,上一回咱们说的是GCC编译相关的内容.这一回咱们说说如何使用GCC发出警告,闲 话休提,言归正转.让我们一起talk GCC吧! 看官们,GCC有编译警告的功能.什么是编译警告?台下有看官提问了.所谓的编译警告就是编译器在编 译过程中把一些不符合编译规则但是又符合编译语法的内容给予警告.我用一个现实生活中的例子给大家 做个比喻:大家都看过足球比赛吧,足球比赛的裁判手里拿着拿着黄色和红色两种颜色的牌.比赛中球员 们违反比赛规则的事情经常发生,如果球员违反的规则不会给比赛带来严重

【转】GCC警告选项例解 -- 不错

原文网址:http://blog.csdn.net/hcx25909/article/details/7383716 程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵.遇到任意一条编译器警告都坚决不放过.有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint. 这个建议也很不错.不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此.那么我 们就从此放弃么?不,如今的编译

编译器处理警告、错误 #pragma GCC diagnostic ignored &quot;-Wunused&quot;

各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused));指定该变量为"未使用的".即使这个变量没有被使用,编译时也会忽略则个警告输出. 文件级:在源代码文件中诊断(忽略/警告) 语法:#pragma GCC diagnostic [error|warning|ignored] "-W<警告选项>"诊断-忽略:(关闭警告) #pragma  GCC diagnostic ignore

一起talk GCC吧(第五回:GCC优化)

各位看官们,大家好,上一回咱们说的是GCC警告相关的内容.这一回咱们说说如何使用GCC优化程序源 代码,闲话休提,言归正转.让我们一起talk GCC吧! 看官们,大家都知道,人们写的代码中,不一定是最优的代码,所以有时候会使用编译器对代码进行优化. 这样可以提高代码运行效率.和警告功能一样,优化功能也是通过选项实现的.选项O(注意是大写,与指 定生成文件名的小写o区分开,另外gcc是区分大小写的,不要写错)的用法和其它GCC选项的用法相同, 不过咱们还是举个例子来说明: gcc -On fil

linux下gcc.gdb整理

gcc 常用选项 -c 只编译不链接,生成目标文件".o" -S 只编译不汇编,生成汇编代码 -E 只进行预编译,不做其他处理 -g 在可执行程序中包含标准调试信息 -o file 将file文件指定为输出文件 -v 打印出编译器内部编译各过程的命令行信息和编译器的版本 -I dir 在头文件的搜索路径列表中添加dir目录 gcc库选项列表 -static 进行静态编译,即链接静态库,禁止使用动态库 -shared 1.可以生成动态库文件 2.进行动态编译,尽可能地链接动态库,只有当没

gcc编辑器的一些常用选项

gcc编辑器的一些常用选项 - -o:指定生成的文件名,未指定默认为a.out. - -g:编译后可以进行gdb调试. - -c:调试core文件(程序的内存映像文件,包含程序运行失败的那个时刻的全局变量). - -Wall:启用大部分gcc警告选项,对保持代码清洁很有用. - -pedatic:保持代码的可移植. - -D:用于命令行定义. - -DDEBUG:在程序中包含额外的调试代码. - -E:参数可以让gcc在预处理结束后停止编译过程. >注意:欢迎补充... 版权声明:本文为博主原创