当我尝试在Mac上编译我的C ++代码时出现此错误。 我已经在PC上编程了一段时间,但刚刚得到了一台用于UNI工作的Mac笔记本电脑,我已经习惯了。我通常使用“gcc”进行编译,但似乎无效。任何帮助,将不胜感激。在此之前,只需在编译时使用“clang ++”。
或者,如果我使用“gcc”进行编译并且代码中存在错误,则它可以正常工作。只有在没有错误时才会发生这种情况。
DataTable
答案 0 :(得分:3)
gcc
,clang
和cc
(似乎是系统上clang
的符号链接)是构建C程序的命令。
g++
和clang++
是构建C ++程序的命令。
C和C ++是两种不同的语言。
虽然所有这些命令通常只是"前门"对于能够构建各种东西的幕后更大的编译器,某些默认值取决于您输入的实际命令。例如,执行gcc
或cc
不会自动将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 ++的同义词。