我怎样才能理解我的库的标准是什么以及gcc在我的计算机中编译的标准是什么?

这来自我的终端:

Korays-MacBook-Pro:~ koraytugay$ gcc --version Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn) Target: x86_64-apple-darwin14.3.0 Thread model: posix 

据我所知,有三种C标准,ANSI C,C99和C11。

我如何知道我拥有哪个库以及我的编译器支持哪些库?

您必须找到编译器和/或操作系统的文档,并不总是清楚地记录下来。


Apple LLVM版本6.1.0(clang-602.0.49)(基于LLVM 3.6.0svn)

这对应于Xcode 6.3。

https://developer.apple.com/library/mac/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html

LLVM 3.5版本中的任何内容都应该在这个版本的编译器中:编译器是“基于llvm 3.6 svn分支,它存在于LLVM.org的3.6版本之前(我知道有点混乱)。

http://clang.llvm.org/cxx_status.html

但是,它们没有类似于C版支持的类似页面。

http://llvm.org/releases/3.5.0/tools/clang/docs/UsersManual.html#differences-between-various-standard-modes

事实上,在我看来,文档甚至没有准确反映clang 3.5的C11支持。


所以基本上,如果文档没有清楚地介绍它,你只需要熟悉编译器。

Xcode 6.3支持C89 / C90,C94,C99和C11的C语言function。 我相信OS X提供高达C99的完整库支持。 OS X不包含C11标准库的实现,但是编译器可能会提供一些C11头。 不是。

Clang支持所有三个标准以及更多(GCC的“gnu99”,……)。 您可以在命令行选项-std的文档中找到用于选择它们的文档 。

http://clang.llvm.org/docs/UsersManual.html#id39

使用-std命令行标志,例如-std=c11-std=c++11来选择标准。