自学内容网 自学内容网

如何知道当前编译器默认C/C++标准是多少?C/C++编译器和标准的详细信息。C/C++编译器和支持标准。

如何知道当前编译器默认C/C++标准是多少?

GCC

  • 参考gcc官方网站和发行说明信息,搜索”default for C code“或”default for C++ code“.
  • man gcc搜索"default for C code"或"default for C++ code".
  • 利用-dM -E参数获取
    g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
    - g++ 11.4.0输出的结果#define __cplusplus 201703L,代表默认C++17.
    gcc -dM -E -x c /dev/null | grep -F STDC_VERSION
    - gcc 11.4.0输出的结果define STDC_VERSION 201710L,即代表默认C17.
    - 也可加入-std=xxx选项来检测:gcc -dM -E -x c -std=c11 /dev/null | grep -F STDC_VERSION会得到201112L.

代码中,可以用__STDC_VERSION__宏(C99之前不支持)和__cplusplus宏判断编译器支持的C标准和C++标准版本。

  • C99标准的值为199901L,C11标准的值为201112L,C17标准的值为201710L.
  • C++98标准的值为199711L,C++11标准的值为201103L,C++14标准的值为201402L,C++17标准的值为201703L,C++20标准的值为202002L.

如何获取预处理器定义了哪些宏?

C/C++编译器和标准的详细信息

C/C++编译器和支持标准

  • GCC
    - GCC没有任何版本默认编译器是C99 (可以用-std=c99开启),较早期版本就已经支持部分C99
    - GCC 5.1首次默认C编译器为C11
    - GCC 8.1首次默认C编译器为C17,GCC13.2 (2023/7/27 released)同样默认为C17.
  • GCC C++
    - GCC 6.1 版本之前默认是C++98.
    - GCC 6.1 首次默认C++编译器为C++14.
    - GCC 11.1 首次默认C++编译器为C++17,GCC13.2 (2023/7/27 released)保持默认为C++17.
  • MSVC C
    - VS2015 支持C99,编译器默认是旧MSVC,.
    - VS2019 编译器默认是旧MSVC, 可选支持C11/C17.
    - 旧MSVC:从VS2015到VS2022,默认的 C 编译器(即未指定 /std:c11 和 /std:c17 时的编译器)实现 ANSI C89,但包括几个 Microsoft 扩展,其中一些是 ISO C99 的一部分。
    详细参见:/std(指定语言标准版本) | Microsoft Learn
  • MSVC C++
    - VS2015支持C++11, 编译器默认为C++14..
    - VS2017支持C++14和C++17, 编译器默认为C++14..
    - VS2019陆续支持C++20, 编译器默认为C++14.
    - VS2022支持C++20,编译器默认为C++14.

注意:上面提到的是对应编译器支持全部或者大部分的标准的时间,事实上在此之前版本编译器就已经在逐步支持,只是支持程度有限。

Visual C++对C/C++新标准的支持 C/C++编译器和标准的详细信息

如何知道当前编译器默认C++标准是多少?


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。


原文地址:https://blog.csdn.net/cxsjabcabc/article/details/143702902

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!