网站首页 > 技术文章 正文
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
C语言有哪些标准?
C语言发展至今,经历过经典C(K&R C)、C89、C99、C11、C17和C23.
- C89相比经典C重要改动:标识符不止前8个字符有效、更多的类型、函数参数类型不需要额外声明、增加更多的宏、支持可变参数等。
- C99相比C89:增加//开头的单行注释、_Bool类型、支持复数、for语句第一个表达式可以声明变量、long long类型、变长数组、声明和语句的混合、内联inline、宽字符wchar等。
- C11相比C99:增加_Generic泛型、静态断言_Static_assert、多线程以及TLS、改进的Unicode支持等。
- C17相比C11:没有引入新的语言特性,只有一些补充和修正。
- C23相比C17:真正的bool、弱化的auto(相比C++)、类似C++的constexpr、类型typeof(类似C++的decltype)、自定义的属性、空初始化"={ }"、二进制字面量(例如0b11)、更好的UTF支持等。
ANSI C和ISO C
- 二者是不同的标准,前者是美国国家标准协会,后者是国际标准化组织。
比如C89 ANSI X3.159-1989 标准后来被ISO采纳变成 ISO/IEC 9899:1990, 二者是存在小的差异.
Visual C++对C/C++新标准的支持的诟病之处
很遗憾的是,微软VC++对C99的支持直到VS2015才基本完全支持,在VS2012之前,仅仅支持C89. 也正是2015年之前,这么多人骂微软并纷纷转移到其它C语言编译器的原因。VS2019开始才正式宣布支持C11/C17.
对于C++标准,VS2013开始支持C++11,VS2017支持C++17, VS2019支持C++20, 显然,微软更偏爱C++.
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
- 上一篇: 《学习C++》基本概念之名称
- 下一篇: 什么是数据驱动设计?极品干货看这里
猜你喜欢
- 2025-08-01 《学习C++》基本概念之名称
- 2025-08-01 《学习C++》之基本概念
- 2025-08-01 仓颉编程语言基础-面向对象编程-接口(Interface)核心特性
- 2025-08-01 《学习C++》基本概念之标识符
- 2025-05-08 定义变量类型总是在变量前面吗?如何理解typedef定义的类型?
- 2025-05-08 7. 包管理与模块(包和模块的区别)
- 2025-05-08 Python基础知识:什么是非局部语句?
- 2025-05-08 苹果来真的!明年起不符合隐私要求的App将从应用商店移除
- 2025-05-08 Java枚举(java枚举菜鸟教程)
- 2025-05-08 可验证凭证(VC):数字时代的重要信任基石
- 08-02C|在一个结构体嵌套一个共用体实现一体多用
- 08-02C++中,常用的强制类型转换函数
- 08-02如何使用C语言编程实现一个推箱子游戏?技术核心和算法实现
- 08-02C++20 新特性(24):模板访问权限和typename的放宽
- 08-02C++零基础到工程实践
- 08-02[深度学习] Python人脸识别库face_recognition使用教程
- 08-02AI算法之怎么利用Python实现支持向量机SVM算法
- 08-02【机器学习】SVM支持向量机
- 1521℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 623℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 526℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 491℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 460℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 458℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)