我无法理解可供我使用的不同编译器。
我主要是用Xcode来编写和编译,在Xcode的偏好设置里,C++编译的选项都有:
C++ 语言方言:
- C++98[-std=c++98] 到 C++14[-std=c++14]
- GNU++98[-std=gnu++98] 到 GNU++14[-std=gnu++14]
C++ 标准库:
- libstdc++(GNU C++ 标准库)
libc++(支持 C++11 的 LLVM C++ 标准库)
谁能解释一下 ^ 究竟是什么?
我明白(如果我错了请纠正我)苹果不再使用 Xcode 分发 GCC 而是使用 Clang?
如果是这样,那为什么 Xcode 有 GNU C++ 标准库的选项? GNU 不制作 GCC 吗?
当我在本地终端中使用
g++ filename.cpp
运行 C++ 代码时,会调用什么编译器?有什么方法可以确保这个
g++
“编译器”是最新的吗?在终端用
g++
编译和用Xcode编译有什么区别?此外,如果我尝试使用 Clang 运行 C++ 程序会有什么不同?
我的类(class)要求我们在我的终端上通过 ssh 在部门服务器的编译器上测试我们的程序。服务器是一台 Unix 机器,我知道它的编译器是 GNU 的 GCC 编译器,我们也使用
g++
访问它。这是否意味着我终端中的本地g++
也是 GCC?
编辑:语法
最佳答案
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 扩展。你可能不知道。只需使用默认版本的最新版本即可。
- 是
- 两个不同的部分,编译器和标准库。您可以将 clang++ 与 libstd++ 一起使用
- g++ -v 会告诉你
- 不是真的。将 xcode 更新到最新版本,或者开始查看自制软件或端口,以获取最新最好的编译器包。
- 可能是同一个编译器,您可以将其设置为指向您已安装的任何编译器。因此,每个指向的是您的选择。
- g++ 和 clang++ 都符合标准。你不太可能注意到很大的不同。他们会将相同的源文件编译成等效的二进制文件。
- 在任何终端中运行 g++ -v 以查看它到底是什么。
关于c++ - 关于我在 OS X 上可用的各种 C++ 编译器的许多问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35592195/