- 论坛徽章:
- 0
|
unix c是k&r在最开始的unix上实现的c的标准,ansi c是ansi对其作的规范标准(增强可移植性)
很多人不太了解这两种c的区别而感到困惑,这里给大家一个参考,希望能有帮助。
1.关键字的删除
ansi删除了过去留作扩展的无用关键字
2.关键字的扩展
ansi增加了5个关键字
const:
通知编译器,该修饰符之后变量处置初始化之后不得修改。
enum:
类型说明符enum用于声称枚举类型。如:
enum sex_t = {male, femail}
sex_t sex;
sex = male;
signed:
允许使用signed修饰。有一些编译器缺省是unsigned,使用这个可以标准化。
void:
可以将无返回值的函数声明为void给编译器看;可以将属性指针声称为 void*变量,在这种情况下,可以使用显示类型符指向欲使用类型的指针。
volatile:
防止编译器对修饰的变量进行优化。如,某一个变量由系统时钟每10秒钟更新一次。声明volatile可以阻止编译器对其优化:
volatile int clck;
int time1;
time1 = clck;
if (time1==clck) ...;
如果clck未声明称volatile,某些编译器将优化二表达式是clck的值仅受一次检查。
3.结构的传递
某些早期的c版本不支持结构传递,在这些版本中,只能象传数组那样传地址。ansi中,结构是放到堆栈上完全传给函数的。如果想传地址,可以使用操作符&
4.函数原形
建议的ansi标准允许预先定义函数的变元类型及其本身返回类型,从而可以对变元及函数返回值进行强类型检查。这就是原型化。
5.标准库
建议的ansi标准重要特征之一是定义了c语言编译程序必须提供的标准库函数集合,这样就增强了c语言程序的可移植性。
6.附加的预处理器指令
ansi在标准unix c的基础上,增加了:
#elif #line
#error #pragma
ansi还增加了几个内部宏定义:
__LINE__ 当前行号
__FILE__ 当前元文件
__DATE__ 当前系统日期
__TIME__ 当前系统时间
__STDC__ 如果为标准实现则置1[/code] |
|