天天看点

关于gcc的一点小人性化提示

    现在对于大多数平台的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]

      ^

可以很清楚的看出,前者只是简单一句模凌两可的提示,让初学者丈二和尚摸不着头脑;不过后者解释的就很清楚了,这是不是让初学乍到的程序猿们感觉很温馨呢?

关于gcc的一点小人性化提示

继续阅读