關於gcc的一點小人性化提示
如今對於大多數平臺的C編譯器來說都會有非常多種選擇,而gcc和clang無疑是2個非常優秀的C編譯器。當然他們也不僅僅是C編譯器。我近期用clang的比較多。原因有非常多。
只是一些小的細節非常讓我喜歡,比方OS X系統中,clang的編譯器警告或錯誤提示是以彩色文本醒目打印出來的。
而gcc則不管怎樣打印的顏色都一樣(我不知道是否有什麽設置能夠改變這一點)。
可是gcc也有其人性化的一點,就是在某些比較隱晦的錯誤時,會有更友好的提示。比方標簽後不能直接寫聲明這樣的情況。2種編譯器的結果例如以下:
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <math.h> #include <unistd.h> int main(void) { int i = 0; puts("hello world!"); LAB: int x = 10; printf("now is %d\n",i++); sleep(3); goto LAB; return 0; }
clang編譯結果:
[email protected]: 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編譯結果:
[email protected]: 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]
int x = 10;
^
能夠非常清楚的看出,前者僅僅是簡單一句模淩兩可的提示,讓剛開始學習的人丈二和尚摸不著頭腦;只是後者解釋的就非常清楚了,這是不是讓初學乍到的程序員們感覺非常溫馨呢?
關於gcc的一點小人性化提示