gcc编译选项中 -w -W -wall的区别

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

-Wall:编译后显示所有警告。

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

举例:

创建一个wall.cpp文件:

#include <stdio.h>
  
void main()
{
        int i = 1.0*4;
        return 1;
}

1、直接编译

gcc -o wall wall.c
编译结果:
wall.c: In function ‘main’:
wall.c:6:9: warning: ‘return’ with a value, in function returning void
  return 1;
         ^
wall.c:3:6: note: declared here
 void main()
      ^~~~

2、 -w 编译

gcc -w -o wall wall.c

编译通过,没有报任何warning

3、-W编译

gcc -W -o wall wall.c
编译结果:
wall.c: In function ‘main’:
wall.c:6:9: warning: ‘return’ with a value, in function returning void
  return 1;
         ^
wall.c:3:6: note: declared here
 void main()
      ^~~~

结果同直接编译一样。

4、-Wall编译

gcc -Wall -o wall wall.c
编译结果:
wall.c:3:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
 void main()
      ^~~~
wall.c: In function ‘main’:
wall.c:6:9: warning: ‘return’ with a value, in function returning void
  return 1;
         ^
wall.c:3:6: note: declared here
 void main()
      ^~~~
wall.c:5:6: warning: unused variable ‘i’ [-Wunused-variable]
  int i = 1.0*4;

注:

g++编译和gcc不太一样

创建wall.cpp文件:

#include <iostream>
using namespace std;

int main()
{
        int a = 1.0*4;
        cout << "a:" << a << endl;

        return 1;
}

g++ main函数必须是int类型,所以不做void 测试:

wall.cpp:4:11: error: ‘::main’ must return ‘int’
 void main()

分别用-w -W -Wall编译均没有报warning。

参考:区别gcc中的-w -W和-Wall选项_cjtstrive的博客-CSDN博客_g++ wall

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值