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++ 默认使用哪个标准的更多相关文章
- GCC编译过程
以下是C程序一般的编译过程: gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing) 对C语言进行预处理,生成*.i文件.· 编译(Compiling) 将上一步生成的*.i ...
- GCC 编译优化指南(转)
GCC 编译优化指南(转) http://www.jinbuguo.com/linux/optimize_guide.html 作者:金步国 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然 ...
- GCC编译C代码
C程序的编译过程 常用文件的后缀名: gcc编译c代码 1.gcc 常用编译选项: 2.gcc编译方法 testc.c: #include <stdio.h> int main ...
- gcc编译的四个阶段:预处理,编译,汇编,链接
1:gcc编译的四个阶段:预处理,编译,汇编,链接 #vi file.c #gcc -E file.c -o file.i//-E查看且预处理后停止编译,-o生成目标文件,-i表示已预处理 #gcc ...
- Linux gcc 编译日记
gcc 编译器是众多编译器组合入口,例如在编译 .cpp 文件时,使用c++ 编译器,编译.c 文件时,使用c编译器. 在编译c++程序时, 库文件与头文件可通过 -L[dir] 指定库目录 , -l ...
- C++常见gcc编译链接错误解决方法
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...
- GCC 编译详解
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...
- gcc编译, gdb调试, makefile写法
//test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...
- gcc编译代码报错及编译方式
一.error: 'for' loop initial declarations are only allowed in C99 mode 前段时间写了一个小C程序,放在linux下用gcc编译出错, ...
随机推荐
- ESP8266内置的定时器库--Ticker库
Ticker的功能非常简单,就是规定时间后调用函数 总体上,根据功能可以把方法分为两大类: 定时器管理方法: 定时器启用方法: detach() 停止定时器 active() 定时器是否 ...
- MySQL数据表
创建数据表 CREATE TABLE IF NOT EXISTS ([列名column][类型type][约束可选]) 查看数据表结构 DESC <表名> 修改数据表结构 ALTER ...
- LDA主题模型评估方法–Perplexity
在LDA主题模型之后,需要对模型的好坏进行评估,以此依据,判断改进的参数或者算法的建模能力. Blei先生在论文<Latent Dirichlet Allocation>实验中用的是Per ...
- 【leetcode】Heaters
Winter is coming! Your first job during the contest is to design a standard heater with fixed warm r ...
- aspnet:MaxHttpCollectionKeys 不起作用
场景: vs2010 webform 表单域长度,在webconfig中加入该节点,有的项目起作用,有的项目无效,不知道是什么原因??
- 基于 Golang 完整获取百度地图POI数据的方案
百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...
- Unity PlayerPrefs 存储的位置
Mac OS 在Mac OS X上PlayerPrefs是存储在~/Library/Preferences文件夹,名为unity.[company name].[product name].plist ...
- a标签点击,页面自动刷新
<a href="javascript:void(0)" id="reDiagnosis" class="checkBtn"oncli ...
- Python 基础知识总结
strptime() 根据指定的格式将一个时间字符串解析为一个时间元组. time.strptime(time_str[,format]) 返回strcut_time对象 #time_str 是时间字 ...
- Python 使用PyQt5进行开发(一)
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器. 我们先简单使用Qt进行一个小工 ...