區別gcc中的-w -W和-Wall選項

區別gcc中的-w -W和-Wall選項

man

-w的意思是關閉編譯時的警告,也就是編譯後不顯示任何warning,因爲有時在編譯之後編譯器會顯示一些例如數據轉換之類的警告,這些警告是我們平時可以忽略的。

-Wall選項意思是編譯後顯示所有警告。

-W選項類似-Wall,會顯示警告,但是隻顯示編譯器認爲會出現錯誤的警告。

在編譯一些項目的時候可以-W和-Wall選項一起使用。

舉例:

例如:

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

1、直接編譯

gcc -o test_w_wall testwwall.c

在這裏插入圖片描述
只顯示這一個警告。

2、下面使用-w選項(-w的意思是關閉編譯時的警告,也就是編譯後不顯示任何warning,因爲有時在編譯之後編譯器會顯示一些例如數據轉換之類的警告,這些警告是我們平時可以忽略的。)

gcc -w -o test_w_wall testwwall.c

不會顯示任何警告,直接編譯成功。

3、-Wall選項意思是編譯後顯示所有警告

gcc -Wall -o test_w_wall testwwall.c

在這裏插入圖片描述

顯示了所有的警告,比之前不使用任何選項多出了變量a未使用這個警告,也多出了main函數的返回值不是int型。

4、-W選項類似-Wall,會顯示警告,但是隻顯示編譯器認爲會出現錯誤的警告。

gcc -W -o test_w_wall testwwall.c

在這裏插入圖片描述
只顯示了沒有返回值的main函數不應該有return一個值這個警告。

5、

gcc -Wall -W -o test_w_wall testwwall.c

在這裏插入圖片描述
和使用-Wall一樣。

之前看了一篇國外程序員寫的博客,說編譯時不使用-W -Wall選項的是stupid的,所以編譯時還是儘量帶上吧。

轉自https://blog.csdn.net/m7548352/article/details/49520069

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章