首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • C++ 标准 和 C 标准 (截止到2019年03月)

    1989 年,草案被 ANSI 正式通过成为美国国家标准,被称为 C89 标准。 【C90 (ISO C)】 随后, 《The C Programming Language》第二版开始出版发行,书中内容根据 ANSI C(C89)进行了更新。 除了标准文档在印刷编排上的某些细节不同外,ISO C(C90) 和 ANSI C(C89) 在技术上完全一样。 现在,各种 C 编译器都提供了 C89(C90) 的完整支持,对 C99 还只提供了部分支持,还有一部分提供了对某些 K&R C 风格的支持。 目前主要的C语言规范有c89(c90), c95(94)和c99。

    1.2K10发布于 2020-12-30
  • 来自专栏c语言与cpp编程

    回顾一下 C 语言的发展历程

    1989年,草案被ANSI 正式通过成为美国国家标准,被称为C89 标准。 3、ISOC(C90) 随后,《TheC Programming Language》第二版开始出版发行,书中内容根据ANSI C(C89)进行了更新。 除了标准文档在印刷编排上的某些细节不同外,ISOC(C90) 和ANSI C(C89) 在技术上完全一样。 目前主要的C语言规范有c89(c90),c95(94)和c99。 从第2点来看,刚开始ANSI制定了C标准,这一制定就耗费了6年时间,终于在89年发布了,所以就叫C89标准了,也就是我取名的C标准1; 从第3点来看,在90年的时候,ISO等组织采纳了C89标准,然后做了一些修改再发布

    92240编辑于 2023-09-06
  • 来自专栏嵌入式大杂烩

    【C语言笔记】什么是ANSI C标准?

    我们在很多地方都有看到过K&R C、ANSI C、ISO C、C89、C99、C11等标准,具体有什么不同呢?(文末有个很好的实例) 什么是K&R C? 什么是ANSI C、ISO C、C89、C90标准? 随着C语言使用得越来越广泛,出现了许多新问题,人们日益强烈地要求对C语言进行标准化。 经过漫长而艰苦的过程,该标准于1989年完成,这个版本的语言经常被称作ANSI C,或有时称为C89(为了区别C99)。 综上,ANSI C、ISO C、C89、C90其实是同一种标准。 什么是C99标准? 2000年3月,ANSI采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 \n"); } return 0; } 在C89标准下编译,结果为: ? 编译报错原因为,在C89标准下,循环变量不能在for循环内定义,必须把标准改为C99标准才可正常编译。

    3.8K30发布于 2019-06-26
  • 来自专栏这里只有VxWorks

    Tool之双斜线注释

    从gnu的手册中,可以看到-ansi等同于-std=c89,而c89那个年代,是不支持双斜线的 ? 问题找到了,怎么解决呢?最简单粗暴的办法就是 -- 删了它! ? 再编译一下试试 ? 原来删除-ansi后,IDE就会将规则重置为-std=gnu89,而正是gnu89对c89做了一些扩展,其中就包含了这个双斜线注释。 不过,毕竟和c89相比,c99的变化太多,编译规则改动太大,可能会涉及到代码移植或兼容的问题,这就需要项目经理或技术负责人来统筹定制规则了。 原来是厂家专门做的改进,就像是gnu89对c89的改进。 ? 看看它改进了哪些,果然有这一条 ? 好,到此为止,都搞定了! 这正是: 编译工具规则多,代码注释有风格。

    1.6K20发布于 2019-07-10
  • 来自专栏嵌入式项目开发

    C语言C99标准、C11标准新增加的特性

    C语言标准C语言从其诞生至今,经历了多个标准的更新,主要标准包括:C89/C90 (ANSI C / ISO/IEC 9899:1990):这是C语言的第一个官方标准,由ANSI于1989年发布,后被ISO C89标准(也称为C90标准)C89是C语言的第一个官方国际标准,正式名称为ISO/IEC 9899:1990。 它是在1989年由美国国家标准协会(ANSI)制定并发布的,故得名C89,随后在1990年被国际标准化组织(ISO)采纳,成为国际标准。 C89标准定义了C语言的基础语法、关键字、数据类型,并引入了标准库函数,比如stdio.h和stdlib.h等,确立了C语言的基本形态。 它是C89标准的后续版本,引入了许多新特性和改进,旨在适应不断发展的编程需求和技术环境。

    1.4K00编辑于 2025-01-16
  • 来自专栏嵌入式大杂烩

    【C语言笔记】分享一个C语言测试程序模板

    void test1(void); // 测试函数1:交换a,b的值 void test2(void); // 测试函数2:C语言预定义宏 void test3(void); // 测试函数3:C89 b的值 case 2 : test2(); break; // 测试函数2:C语言预定义宏 case 3 : test3(); break; // 测试函数3:C89 当前编译时间:%s\n", __TIME__); printf("当前文件名称:%s\n", __FILE__); printf("当前函数名称:%s\n", __FUNCTION__); } /* C89 与C99标准的区别 */ void test3(void) { int i; system("cls"); // C99允许在for循环内定义循环变量,而C89不允许 // gcc -std=c99 ====================\n"); printf("[01]测试:交换a,b的值\n"); printf("[02]测试:C语言预定义宏\n"); printf("[03]测试:C89

    3.1K30发布于 2019-06-26
  • 来自专栏这里只有VxWorks

    C语言之关键字

    C89 / ANSI C 1989年,由ANSI发布,32个 auto break case char const continue default do double else enum extern register return short signed sizeof static struct switch typedef union unsigned void volatile while C89

    1.1K20发布于 2020-02-14
  • 来自专栏遊俠扎彪

    C语言C99标准中的变长数组(VLA)

    但在GNU C下有点小特殊,使用gcc -std=c89编译上述代码,发现也是OK的!原来,变长数组在c89中是作为GNU C的一个扩展存在的。

    4.2K90发布于 2018-01-01
  • 来自专栏量子位

    Linux之父终于被劝动:用了30年的Linux内核C语言将升级至C11

    这种非预测性bug发生的原因是,C89中没有“在循环中声明变量”。 但是,由于内核停留在C89标准上,因此无法在循环中声明变量。 Linus决定,那咱们还是升级吧,也许是时候转向C99标准了。 虽然它也有20多年的历史,但至少比C89新,可以在循环中声明变量。 既然C89如此陈旧,这么多年还没做出改变呢?Linus说,那是因为我们在一些古老的gcc编译器版本中遇到了一些奇怪的问题,不能随便升级。

    78030编辑于 2022-03-04
  • 来自专栏程序员

    GCC编译器的-std选项

    以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 的修订版)、C99、C11。

    3.3K20发布于 2020-12-01
  • 来自专栏嵌入式学习

    c99的新功能

    《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。 支持 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了) 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool 支持 long 修改了 / % 处理负数时的定义,这样可以给出明确的结果,例如在C89中-22 / 7 = -3, -22 % 7 = -1,也可以-22 / 7= -4, -22 % 7 = 6。

    69250发布于 2020-09-08
  • 来自专栏安富莱嵌入式技术分享

    【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈

    9.2   数据类型 了解数据类型之前要对ANSI C和ISO C的发展史有个了解,特别是C89,C99和C11的由来。 因为这个标准是1989年发布的,所以一般简称C89标准。有些人也把C89标准叫做ANSI C。   在1990年,ANSI C89标准被国际标准化组织(ISO)和国际电工委员会(IEC)采纳为国际标准,名叫ISO/IEC 9899:1990 - Programming languages  C,有些人简称 因此,C89和C90通常指同一个标准,一般更常用C89这种说法。   对于我们常用的编译器MDK和IAR而已,C89,C99和C11均支持。

    1.1K60发布于 2019-05-07
  • 来自专栏Visual Codex

    [C] C语言标准

    ###C89和C90   1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。 这个版本的语言经常被称作"ANSI C”,或有时称为"C89"(为了区别C99)。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。 因此,C89和C90通常指同一种语言。

    83720发布于 2021-02-24
  • 来自专栏闪石星曜CyberSecurity

    C语言 main 函数到底怎么写是对的?

    其实这种写法使用现在的编译器编译时会警告,但查了一下在C89标准中是可以的,而且由于函数没有显式声明返回类型那么编译器会将返回值默认为int的缘故,其返回值也为int。 查了C89/C99/C11相关文档,都没有提到任何这种写法的痕迹,我见过最多的写法就是这种,不清楚为什么有这么多初学者这么写。严格来说返回值为void是不正确的。 其实官方标准已经给出了这个问题的答案,C89/C99/C11标准文档中只提供了以下两种main函数的写法: int main(void) int main(int argc, char *argv[]

    1.9K10发布于 2020-07-26
  • 来自专栏诸葛青云的专栏

    嵌入式程序开发,C语言和C++究竟应该用哪个?

    小明是一名嵌入式软件工程师,他擅长C语言和C++编程,现在需要在一款提供C++和C89编译器的4KB RAM 硬件设备上进行程序开发,他觉得C++有下面这些好用的特性: C++支持inline函数,它比 小明还有理由坚持只使用C89进行程序开发吗? 还有理由坚持只使用C89进行程序开发吗? 讨论 对于资源有限,比如RAM只有4KB的设备,我通常在正式开发C语言程序之前,会先写一些样例试水。

    3.1K10发布于 2019-10-11
  • 来自专栏电子荣耀

    C语言概述

    1989年,ANSI发布了第一个完整的C语言标准: ANSI X3.159--1989,简称“C89”,不过人们也习惯称其为“ ANSI C”。 C89在1990年被ISO(国际标准化组织)采纳并命名为ISO/IEC 9899,简称为“C90”。

    61320编辑于 2022-04-11
  • 来自专栏hotarugaliの技术分享

    C语言各版本对比

    image.png 附录 参考资料: C语言的各种版本:C89,AMD1,C99,C11

    1.1K10编辑于 2022-03-18
  • C 语言发展史 & 版本总结概述

    C语言的最早标准版本--C89(也称为C90) 全称:ANSI X3.159-1989(ANSI C),ISO/IEC 9899:1990(C90)。 C89的特点是简洁、可移植且易于理解,被广泛应用于各种计算机平台。 3. C99 全称:ISO/IEC 9899:1999。 背景:1999年发布,是C语言的第三个标准版本。 C89 ANSI X3.159-1989 美国国家标准协会(ANSI) 1989年 基于早期的K&R C语言 定义了C语言的核心语法、数据类型和标准库函数等基本要素 C90 ISO/IEC 9899:1990 国际标准化组织(ISO)和国际电工委员会(IEC) 1990年 C语言的首个官方标准,基本上是对C89标准的复制,加入了一些额外的细节 与C89标准几乎完全相同,做了一些小的改进和澄清 C95 ISO

    39110编辑于 2026-01-20
  • 来自专栏零域Blog

    【C】记录两个C语言的误区

    一开始我以为是使用的编译器的标准不同,因此尝试着使用c89,c90,c99,c11编译程序,使用c89和c90时, 编译器还是没有报任何错误,而使用c99和c11时,会报下面的警告: test.c:

    1.2K20编辑于 2022-03-02
  • 来自专栏嵌入式学习

    C语言定义数组时使用枚举作为数组的下标 ——c99功能

    《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。 支持 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了) 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool 支持 long 修改了 / % 处理负数时的定义,这样可以给出明确的结果,例如在C89中-22 / 7 = -3, -22 % 7 = -1,也可以-22 / 7= -4, -22 % 7 = 6。

    2K60发布于 2020-09-07
领券