在我的Mac上编译时,当我使用“gcc”编译而不是使用clang ++时,我会收到此错误

时间:2016-05-08 14:17:47

标签: c++ macos gcc compiler-errors clang

当我尝试在Mac上编译我的C ++代码时出现此错误。 我已经在PC上编程了一段时间,但刚刚得到了一台用于UNI工作的Mac笔记本电脑,我已经习惯了。我通常使用“gcc”进行编译,但似乎无效。任何帮助,将不胜感激。在此之前,只需在编译时使用“clang ++”。

或者,如果我使用“gcc”进行编译并且代码中存在错误,则它可以正常工作。只有在没有错误时才会发生这种情况。

DataTable

2 个答案:

答案 0 :(得分:3)

gccclangcc(似乎是系统上clang的符号链接)是构建C程序的命令。

g++clang++是构建C ++程序的命令。

C和C ++是两种不同的语言。

虽然所有这些命令通常只是"前门"对于能够构建各种东西的幕后更大的编译器,某些默认值取决于您输入的实际命令。例如,执行gcccc不会自动将C ++标准库添加到链接到程序中的库中。

阅读文档,然后使用正确的命令在工具链中构建C ++程序。对于Clang来说,那是clang++(正如你已经发现的那样)。对于GCC,那是g++

答案 1 :(得分:1)

在以前的Xcode版本中,apple曾经同时提供libstdc ++和libc ++。为了防止名称冲突,libc ++的维护者将std :: namespace别名为std :: __ 1。

正在发生的事情是g ++(默认使用libstdc ++)链接到使用clang编译的库(默认为libc ++)

事实上,stdlibc ++仍然附带Xcode,但据我所知,它已经过时了。

混淆?

我也是。

除非您确切知道自己在做什么,否则最好在mac上使用clang ++编译所有内容。事实上,Xcode的更高版本将g ++视为clang ++的同义词。