我无法理解可用的不同编译器。
我主要使用Xcode进行编写和编译,在Xcode的首选项中,C ++编译有以下所有选项:
C ++语言方言:
C ++标准库:
libc ++(支持C ++ 11的LLVM C ++标准库)
有人可以解释究竟是什么^?
我理解(如果我错了,请纠正我),苹果不再使用Xcode分发GCC并使用Clang代替?
如果是这样的话,为什么Xcode可以选择GNU C ++标准库? GNU不是GCC吗?
在我的本地终端中使用g++ filename.cpp
运行C ++代码时调用了什么编译器?
有没有办法确保这个g++
"编译器"是最新的?
在终端中使用g++
进行编译与使用Xcode之间的区别是什么?
另外,如果我尝试使用Clang运行C ++程序会有什么不同?
我的班级要求我们通过终端上的ssh在部门服务器的编译器上测试我们的程序。服务器是Unix机器,我知道它的编译器是GNU的GCC编译器,我们也使用g++
访问它。这是否意味着我的终端中的本地g++
也是GCC?
编辑:语法
答案 0 :(得分:4)
1
C ++语言方言
C++98[-std=c++98] through C++14[-std=c++14]
GNU++98[-std=gnu++98] through GNU++14[-std=gnu++14]
C ++语言随着时间的推移而发展。这些是您可以使用的各种语言版本。如果你必须与旧的东西兼容,你可能会被迫使用旧的。否则你可能想要使用最新的,在上面的列表中是c ++ 14。 14代表2014年,98代表1998年 - 它应该代表该标准版本被祝福的那一年。
除标准C ++外,还有非标准扩展。 Gnu是编译器"制造商"," GNU"以上是GNU为特定文档版本指定的非标准扩展。
C ++标准库:
libstdc ++(GNU C ++标准库) libc ++(支持C ++ 11的LLVM C ++标准库)
除基本语言外,标准库也是标准的一部分。这是标准库的两种不同实现。第一个是GNU,第二个是llvm。 llvm是一个不同的编译器制造商。
在osx上你可能会使用libc ++,因为我相信llvm编译器(clang ++)现在是标准的。如果需要,llvm编译器将支持gnu扩展。你可能不会。只需使用最新版本的默认版本。