不同版本的C / C ++

时间:2014-08-20 21:49:03

标签: c++ c compiler-construction

我知道我的计算机上有Java 1.7和Python 2.7。如何查看我的C和C ++版本?另外,我如何检查我正在使用的C / C ++编译器?我正在运行OS X.

此外,不同版本的C / C ++与不同版本的编译器之间的C / C ++有什么关系?每个编译器是否对应不同版本的C / C ++?例如,gcc4-3,比如说只编译C ++ 2014吗?

4 个答案:

答案 0 :(得分:6)

如果您需要C ++标准版本,那么您应该使用' __ cplusplus'宏here

如果您指的是编译器版本和编译器类型,请检查this以查找由不同编译器定义的所有宏。

O,顺便说一下,编译器通常是向后兼容的。因此,可以编译C ++ 11代码的编译器也可以编译C ++ 98。

答案 1 :(得分:4)

  

如何查看我的C和C ++版本?

C ++编译器应定义预处理器的const __cplusplus,您可以std::cout<<__cplusplus<<'\n'查看正在运行的标准编译器。

  

如何查看我正在使用的C / C ++编译器?

检入您的IDE。

  

C / C ++的不同版本与C / C ++的不同版本编译器之间的关系是什么?

较新的编译器可能适用于最新的标准。

  

每个编译器是否对应不同版本的C / C ++?

MS Office是否仅打开最新版本的文件?的不。

答案 2 :(得分:1)

要获取gcc的版本,您可以在终端中运行:

gcc -v

对于g ++,您可以运行:g++ -v


编译器可以编译不同版本的C / C ++。所以gcc4-3可以编译不同版本的C ++。

编译器的版本独立于语言版本。新版本的gcc包含新功能和错误修正。

答案 3 :(得分:0)

  

每个编译器是否对应不同版本的C / C ++?

没有。编译器版本与其支持的语言版本之间没有相关性。

大多数当前的编译器应该支持从K&amp; RC到C2011的所有内容,至少就语法而言(某些头文件可能丢失,而gets库函数已经消失了在C2011标准中,因此非常旧的代码在根据最新标准编译时可能会中断。某些编译器(例如gcc)允许您指定要构建的语言版本(C89 / C90为-ansi,C99为-std=c99,C2011为-c11 ,至少从gcc 4.9.1)开始。

Visual Studio中Microsoft的C编译器中的一个值得注意的例外;直到最近非常,它最多只支持C90。我的理解是,他们终于开始支持至少一些的C99 / C2011更改(例如混合声明和代码)。

就C而言,如果支持至少C90,预定义宏__STDC__将扩展为1__STDC_VERSION__将扩展为long如果支持C99或C2011,则为yyyymmL形式的常量(例如,如果编译器最多支持C99,则__STDC_VERSION__会扩展为199901L