zoukankan      html  css  js  c++  java
  • 关于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
    ",i++);
    	sleep(3);
    	goto LAB;
    	return 0;
    }

    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]

      int x = 10;

          ^


    能够非常清楚的看出,前者仅仅是简单一句模凌两可的提示,让刚開始学习的人丈二和尚摸不着头脑;只是后者解释的就非常清楚了,这是不是让初学乍到的程序员们感觉非常温馨呢?吐舌头

  • 相关阅读:
    Oracle OCP提纲
    Oracle redo 日志损坏的几种情况下的恢复
    Oracle 归档开启切换和归档日志删除(单实例和RAC)
    MySQL mysqldump备份与恢复
    Oracle 卸载
    MySQL脚本自动安装mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    Oracle session出现大量的inactive
    Oracle 备份与恢复基础
    NuGet 下载dll
    Azure Service Bus
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6999153.html
Copyright © 2011-2022 走看看