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

时间:2015-04-13 15:49:50

标签: c gcc standards

这是来自我的终端:

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。

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:4)

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


  

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语言功能。我相信OS X提供高达C99的完整库支持。 OS X不包含C11标准库的实现,但是编译器可能提供一些C11头。但是,<threads.h>并非如此。