-w的意思是關閉編譯時的警告,也就是編譯後不顯示任何warning,因為有時在編譯之後編譯器會顯示一些例如資料轉換之類的警告,這些警告是我們平時可以忽略的。
-Wall選項意思是編譯後顯示所有警告。
-W選項類似-Wall,會顯示警告,但是隻顯示編譯器認為會出現錯誤的警告。
在編譯一些專案的時候可以-W和-Wall選項一起使用。
舉個例子:
#include <stdio.h> void main() { int a=1.0*4; return 0; }
直接編譯
gcc -o test_w_wall testwwall.c
只顯示一個警告。
使用-w選項
gcc -w -o test_w_wall testwwall.c
不會顯示任何警告,直接編譯成功。
使用-Wall選項
gcc -Wall -o test_w_wall testwwall.c
顯示了所有的警告,比之前不使用任何選項多出了變數a未使用這個警告,也多出了main函式的返回值不是int型。
使用-W選項
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的,所以編譯時還是儘量帶上吧。
轉自:http://blog.csdn.net/m7548352/article/details/49520069