[華語, cmn-Hant-TW]
因為 GPLv3 的問題,FreeBSD 將來的預設編譯器會從 gcc 往 clang 移動。clang 的賣點之一就是編譯的訊息較易懂,一個簡單的例子
1 2 3 4 5 6 | #include <stdio.h> main () { int a int b; } |
gcc version 4.2.1 20070719 [FreeBSD]
ft.c:3: warning: return type defaults to 'int' ft.c: In function 'main': ft.c:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' ft.c:5: warning: unused variable 'b' ft.c:6: warning: control reaches end of non-void function |
clang version 2.8 (trunk)
ft.c:3:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] main () { ^ ft.c:4:8: error: expected ';' at end of declaration int a ^ ; 1 warning and 1 error generated. |
gcc 有加 -Wall 參數把 warning 印出來,預設是只會印出第 5 行有 error 的訊息。很明顯 clang 的輸出較具有可讀性,他明確指出第 4 行忘了加分號 (;) 而不是說第 5 行前面漏了什麼東西,另外若 Terminal 有支援的話,他的一些關鍵字及標示位置的符號(^)還會用不同的顏色表示,可以很清楚的看出問題出在哪裡。
希望 clang 能愈來愈普及!