C89,C99和固定长度整数int8_t等

参考一:http://hi.baidu.com/gaojinshan/item/29e5c8f6be290b0dd99e7215

0、C语言,1973年由Dennis M. Ritchie设计和实现。
1、K&R C。1978年由Kernighan和Ritchie合写的书《The C Programming Language》,形成了C语言的事实的标准,简称为K&R C。
2、ANSI CC89C90)。1989年,美国国家标准局(ANSI)颁布了第一个官方的C语言标准(X3.159-1989),简称为ANSI C或C89;1990年,它被国际标准化组织(ISO)采纳国际标准(ISO/IEC9899:1990),简称为C90。这个标准是目前广泛使用并完全支持的。
3、C99。199年,ISO/ANSI又推出了新的标准(ISO9899:1999),简称C99。这个标准目前支持的可能还不太全面。

C89/C90标准的指导原则是
1、相信程序员;
2、不妨碍程序员做需要完成的事情;
3、让语言保持短小简单;
4、只提供一种方法来执行一种操作;
5、使程序运行速度快,即使不能保证其可移植性。(不追求定义的抽象统一,更优先考虑运行效率)

C89/C90对K&R C的改变有
0、增加了函数原型(prototype),强调对函数的输入参数进行严格的类型检查;并补充定义了C语言的标准函数库
1、删除了关键字:entry(条目/入口)
2、增加了关键字:const(常型变量)、enum(枚举类型)、signed(有符号的,例如signed char)、void(空/无,可用于函数返回值和形参、通用指针类型)、volatile(易变变量,防止编译器错误的优化)
3、传递结构:允许将结构本身作为参数传递给函数(原来只允许传地址)
4、函数原型:增加了函数原型(便于编译器进行类型检查)
5、增加了预处理指令:#elif(else if)、#error(错误,强制编译停止)、#line(修改当前行号和源文件名)、#pragma(附注/编译指令,编译器定义的与实现有关的指令)
6、定义了固有宏:__LINE__(当前行号)、__FILE__(源文件名)、__DATE__(当前系统日期)、__TIME__(当前系统时间)、__STDC__(标准C版时为1)

C99的修订目标主要有三点
1、支持国际化编程,引入了支持国际字符集Unicode的数据类型和库函数;
2、修正原有版本的明显缺点。如整数的移植方法,例如int8_t、int16_t、int32_t和int64_t等类型;
3、针对科学和工程的需要,改进计算的实用性。例如添加了复数类型和新数学函数。


参考二:C99 standard
7.18.1.1 Exact-width integer types
1.  The typedef name int N_t designates a signed integer type with width N , no padding bits, and a two’s complement representation. Thus, int8_t denotes a signed integer type with a width of exactly 8 bits.

2.  The typedef name uintN_tdesignates an unsigned integer type with width N . Thus, uint24_t denotes an unsigned integer type with a width of exactly 24 bits.
3 .These types are optional. However, if an implementation provides integer types with widths of 8, 16, 32, or 64 bits, it shall define the corresponding typedef names.

你可能感兴趣的:(wimax)