免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1428 | 回复: 0
打印 上一主题 下一主题

unix c 和 ansi c 的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-26 12:47 |只看该作者 |倒序浏览
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]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP