現在對于大多數平台的c編譯器來說都會有很多種選擇,而gcc和clang無疑是2個非常優秀的c編譯器。當然他們也不隻是c編譯器。我最近用clang的比較多,原因有很多。不過一些小的細節很讓我喜歡,比如os x系統中,clang的編譯器警告或錯誤提示是以彩色文本醒目列印出來的。
而gcc則無論如何列印的顔色都一樣(我不知道是否有什麼設定可以改變這一點)。
但是gcc也有其人性化的一點,就是在某些比較隐晦的錯誤時,會有更友好的提示。比如标簽後不能直接寫聲明這種情況,2種編譯器的結果如下:
clang編譯結果:
apple@kissair: c_src$clang -std=c11 -wall -o3 -g0 -o x x.c
x.c:12:2: error: expected expression
int x = 10;
^
1 error generated.
gcc編譯結果:
apple@kissair: c_src$gcc -std=c11 -wall -o3 -g0 -o x x.c
gcc: warning: couldn't understand kern.osversion '14.0.0
x.c: in function 'main':
x.c:12:2: error: a label can only be part of a statement and a declaration is not a statement
int x = 10;
^
x.c:12:6: warning: unused variable 'x' [-wunused-variable]
^
可以很清楚的看出,前者隻是簡單一句模淩兩可的提示,讓初學者丈二和尚摸不着頭腦;不過後者解釋的就很清楚了,這是不是讓初學乍到的程式猿們感覺很溫馨呢?
