004 gcc 编译 C/C++ 默认使用哪个标准

2019-09-01

004 gcc 编译 C/C++ 默认使用哪个标准

0. 前言

  • 我挺久没碰 C,不想就这么忘了,最近重温了一些相关知识

1. C 语言的几种“方言”

  • 简单地说,有这么几种常见的
年份 名称
1983 ANSI C
1987 C87
1999 C99
2011 C11
  • C 语言的全国二级等级考试采用的标准是 ANSI C (如果没变的话)

2. gcc 编译 C 默认使用哪个标准

  • 查了一些资料,说法不一,大概因为大家使用的是不同版本的 gcc

2.1 我使用的 gcc 版本

$ gcc -v
... ...
Target: x86_64-w64-mingw32
... ...
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project)

2.2 网上的一种方法

  • 我想到之前装过 Cygwin,就打开试了这条代码
$ gcc -posix -E -dM - </dev/null
... ...
#define __STDC_VERSION__ 201112L
... ...
  • 结果很长,有用的是这句,但只能看出来是 2011 的版本

2.3 想到了一个 Linux 的命令:man

  • 同样是在 Win10 的环境打开 Cygwin
$ man gcc
...
gnu11
gnu1x
    GNU dialect of ISO C11. This is the default for C code. The name gnu1x is deprecated.
...
  • 我截了张图

技术图片

  • 总算得到了结果:gcc 8.1.0 编译 C 所使用的默认标准为 gnu11

3. gcc 编译 C++ 默认使用哪个标准

  • 直接上图

技术图片

  • 结论:gcc 8.1.0 编译 C++ 所使用的默认标准为 gnu++14

004 gcc 编译 C/C++ 默认使用哪个标准

004 gcc 编译 C/C++ 默认使用哪个标准

原文地址:https://www.cnblogs.com/yorkyu/p/11440970.html