优秀的编程知识分享平台

网站首页 > 技术文章 正文

Visual C++对C/C++新标准的支持有何诟病之处?C语言有哪些标准?

nanyue 2025-08-01 19:40:26 技术文章 2 ℃

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




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++编译器和支持标准 – 编程语言-迷软信息

早期MSVC对C99支持不好的原因 – 编程语言-迷软信息








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

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

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

最近发表
标签列表