mac 使用gcc 为啥编译错误是clang 提示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mac 使用gcc 为啥编译错误是clang 提示相关的知识,希望对你有一定的参考价值。

参考技术A 因为Mac上现在的GCC其实还是clang。如果想要用gcc需要自己安装。但是clang的编译效率是gcc的超多倍,所以基本很少会要用到gcc的。
找本书好好看,应该是什么地方打算了吧
GCC那里不是有提示
第几行错误么?
#include
main()

printf("hello
word\n");

-------
GCC
name.c
如果不成功的话
他好像又说第几行有问题的
----
难道是编译环境有问题...
我这里运行都正常...
不知道拉

关于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;

      ^


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





以上是关于mac 使用gcc 为啥编译错误是clang 提示的主要内容,如果未能解决你的问题,请参考以下文章

为啥在编译期间不使用 GCC 选项 -Os?

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

为啥 clang 无法展开循环(即 gcc 展开)?

为啥 clang 和 gcc 在这个虚拟继承代码上存在分歧?

FreeBSD 为啥要废弃 GCC 改用 Clang/LLVM

如何设置来用clang/clang++替换Linux下的默认编译器Gcc