gcc中的-w -W和-Wall选项

Posted 牛顿的小脑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc中的-w -W和-Wall选项相关的知识,希望对你有一定的参考价值。

gcc编译的时候,为什么有的要加 -Wall 这样的编译选项呢?是什么意思呢?

原文: http://blog.csdn.net/m7548352/article/details/49520069

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

今天在看一个makefile时看到了gcc -W -Wall....这句,不明其理,专门查看了gcc的使用手册。

-w的意思是关闭编译时的警告,也就是编译后不显示任何warning,因为有时在编译之后编译器会显示一些例如数据转换之类的警告,这些警告是我们平时可以忽略的。

-Wall选项意思是编译后显示所有警告。

-W选项类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告。

在编译一些项目的时候可以-W和-Wall选项一起使用。

举个例子:

[cpp] view plain copy
 
  1. #include <stdio.h>  
  2.   
  3. void main()  
  4. {  
  5.         int a=1.0*4;  
  6.         return 0;  
  7. }  

直接编译

gcc -o test_w_wall testwwall.c

技术分享

只显示这一个警告,下面使用-w选项。

gcc -w -o test_w_wall testwwall.c

不会显示任何警告,直接编译成功。

gcc -Wall -o test_w_wall testwwall.c

技术分享

显示了所有的警告,比之前不使用任何选项多出了变量a未使用这个警告,也多出了main函数的返回值不是int型。

gcc -W -o test_w_wall testwwall.c

技术分享

只显示了没有返回值的main函数不应该有return一个值这个警告。

gcc -W -Wall test_w_wall testwwall.c

技术分享

比单独使用-W多出了变量为使用这个警告,比-Wall选项少了一个看起来重复的main函数返回值不是int这个警告。

之前看了一篇国外程序员写的博客,说编译时不使用-W -Wall选项的是stupid的,所以编译时还是尽量带上吧。

以上是关于gcc中的-w -W和-Wall选项的主要内容,如果未能解决你的问题,请参考以下文章

GCC 中的库连接

C++ (GCC) 中的四倍精度

GCC 中的“空基优化”是不是可配置?

Linux中的gcc编译

Visual Studio 中的 GCC 样式弱链接?

线程(c++ 中的并行计算)是不是与优化级别(gcc)不兼容?