C语言标准,ANSI C

ANSI CISO CStandard C是指美国国家标准协会(ANSI)和国际标准化组织(ISO)对C语言发布的标准。历史上,这个名字专门用于指代此标准的原始版本,也是支持最好的版本(称为C89或C90)。使用C的软件开发者被鼓励遵循标准的要求,因为它鼓励使用跨平台的代码。

目录1 ANSI C和ISO C的历史1.1 C891.2 C901.3 C991.4 C111.5 C182 主要编译器的支持2.1 选择编译3 支持ANSI C的编译器4 参考文献5 外部链接ANSI C和ISO C的历史[编辑]

C的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版亦被ANSI采纳,但名称ANSI C(而不是ISO C)仍被广泛使用。[1]一些软件开发者使用名称ISO C,还有一些使用中立的名称Standard C

C89[编辑]

1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立C的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming Language C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。

C90[编辑]

在1990年,ANSI C标准(带有一些小改动)被国际标准化组织采纳为ISO/IEC 9899:1990[2],这个版本有时候称为C90。因此,C89C90通常指同一种语言。

C99[编辑]主条目:C99

在2000年三月,ANSI采纳了ISO/IEC 9899:1999标准。这个标准通常指C99。

C11[编辑]主条目:C11

在2011年12月,ANSI采纳了ISO/IEC 9899:2011标准。这个标准通常即C11。

C18[编辑]主条目:C18 (C语言标准)

在2018年6月,ANSI采纳了ISO/IEC 9899:2018标准,这个标准通常即C18(有时被称为C17),它是C语言的现行标准。

主要编译器的支持[编辑]

ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。任何仅仅使用标准C并且没有任何硬件依赖假设的代码实际上能保证在任何平台上用遵循C标准的编译器编译成功。如果没有这种预防措施,多数程序只能在一种特定的平台或特定的编译器上编译,例如,使用非标准库,例如图形用户界面库,或者有关编译器或平台特定的特性例如数据类型的确切大小和字节序.

选择编译[编辑]

为了减轻K&R C和ANSI C标准,__STDC__("standard c")巨集可以被用来将代码分割为ANSI和K&R部分。

#if __STDC__ extern int getopt(int, char * const *, const char *); #else extern int getopt(); #endif

上面最好使用"#if __STDC__"而不是"#ifdef __STDC__",因为一些实现可能会把__STDC__设置为0来表示不遵循ANSI C。"__STDC__"能处理任何没有被巨集替换或者值为0的标示符。因而即使巨集"__STDC__"没有定义来表示不遵循ANSI C,"__STDC__"仍然能像显示的那样工作。

在上面的例子,一个原型中使用了ANSI实现兼容的函数声明,而另一个使用了过时的非原形声明。它们在C99和C90中依旧是ANSI兼容的,但并不被鼓励使用。

支持ANSI C的编译器[编辑]GCCXcodeMicrosoft Visual C++(C89/90和部分C99)ARM RealView参考文献[编辑]^ Brad Kelechava. The Origin of ANSI C and ISO C. 2017-09-14[2018-08-14]. (原始内容存档于2018-08-20). ^ Standards - Using the GNU Compiler Collection (GCC). [2012-06-24]. (原始内容存档于2012-06-17). 外部链接[编辑]ISO C working group(页面存档备份,存于互联网档案馆)Draft ANSI C Standard (ANSI X3J11/88-090) (May 13, 1988), Third Public Review(页面存档备份,存于互联网档案馆)Draft ANSI C Rationale (ANSI X3J11/88-151)(页面存档备份,存于互联网档案馆)(Nov 18, 1988)Schreiner, Axel-Tobias. Object oriented programming with ANSI-C. Hanser. 1994. ISBN 3-446-17426-5. ISO/IEC 9899:1999 Programming Languages -- C. American National Standards Institute. [2010-06-29]. (原始内容存档于2011-07-25). ANSI Standards Action Vol. 36, #48 (PDF). American National Standards Institute. 2005-12-02[2010-06-29]. (原始内容 (PDF)存档于2016-03-04). 查论编C語言《C程序设计语言》(K&R C)历史ANSI CC99C11C18嵌入式C语言MISRA C特性Functions头文件字符串SyntaxPreprocessor数据类型函式庫glibcC標準程式庫C POSIX libraryDietlibcuClibcNewlibEGLIBCBionicklibcmusl編譯器ClangGCCMicrosoft MSC编译器Intel C++編譯器Borland Turbo CLCCPelles CPCCTCCC++/CLIC++/CXWatcom C/C++ compilerC與其他的程式語言C与C++兼容性運算子Pascal与C的比较(英语:Comparison of Pascal and C)C to Java byte-code compiler派生的程式語言C++C♯Objective-CD語言Alef(英语:Alef (programming language))LimboGoValaC/C++的整合開發環境分类分类
减肥晚上吃什么合适多吃水果会发胖吗怀孕多久才可以看到胎儿成形啊小孩几个月成型黄月英三国杀维基FandomDSP系列一拳奶爸175喜欢抓鱼的大富豪最近比较好的广告语开心幽默音乐的笑话25个提神笑话百家湖核心区纯新盘终于要来了阳光城檀境南京重回百家湖精粹生活体亮相客房销售方案及措施酒店客房主管发言稿求十二生肖搭建册大神有的发一下吧原廠技師QA第一集怀孕初期会放屁多吗为什么怀孕后经常放屁老爱放屁的中医处理办法推耽美小说疯批攻三观太正的人不建议看急诊室故事在线观看免费我对可转债的反思蓝天航空公司的空姐王静手机电子书