论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言程序:C99 的语言新特性

文章类别:C语言程序设计 | 发表日期:2011-1-17 8:55:13

C语言程序:C99 的语言新特性

版权所有:云风    


云风吐血整理了下面这个 :) 可能还有极少漏掉的新特性.    
不过那一般是用处不大的东西    

1. 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节    
变量名函数名什么的要求支持到 63 字节 ( extern 的要求支持到 31)    
2. 预处理增强了. 例如, 1.宏支持类似 ... 的东西    
#define Macro(...) __VA_ARGS__    
2. 使用宏的时候,参数如果不写. 而宏里用 #,## 这样的东西,    
会扩展成空串. (以前会出错的)    
3. 支持 // 行注释    
4~xx. 还有些我不太关心的扩展 ;)    
3. 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool    
restrict 含义比较复杂, 不太能简单解释清楚. 好在大家应该    
都有耳闻是什么东西, 后面几个 _开头的类型关键字早就应该支持了 ;)    
因为防止以有的代码出问题, 所以只好 _ 开头了    
支持 long long, long double _Complex, float _Complex 这样的类型 :)    
4. 支持 <: :> <% %> %: %:%:, 等等奇怪的符号替代, D&E 里好象提过这个    
5. 支持了不定长的数组. 数组的长度就可以用变量了 :) 这个是我刚刚从    
basic 转到 C 时最想要的东西 :) 声明类型的时候呢,就用 int a[*]    
这样的写法. 不过考虑到效率和实现, 这玩意并不是一个新类型.    
所以就不能用在全局里, 或者 struct union 里面, 说白了, 就是帮你调用    
_alloca. 当然, 如果你用了这样的东西, goto 语句就受限制了.    
不能跳到所在的语句段里了.    
6. 变量声明可以放在任何地方, 而不必都放在语句段的开头.    
而 for 语句现在提倡这么写 for(int i=0;i<100;++i) 就是说, int i  
的声明放在里面, i 只在 for 里面有效.  
7. 当一个类似结构的东西需要临时构造的时候, 可以用 (type_name)  
{xx,xx,xx} 这有点像 C++ 的构造函数 嘿嘿  
8. 初始化结构的时候现在可以这样写:  
struct {int a[3], b;} hehe[] = { [0].a = {1}, [1].a = 2 };  

struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} //  
3,4 是对 .c,.d 赋值的  

这个感觉超强啊 ^^ 我一直想要的东西, 为什么 C++ 没有呢 ;(  

9. 字符串里面, u 支持 unicode 的字符 :)  
10. 好象还支持什么 16 进制的浮点数的描述, 不过我很奇怪为什么不支持 2  
进制整数的描述  
11.因为现在支持 long long 了(规定至少是 64bit) , 所以 printf scanf 里就多出支持一个 ll /  
LL (VC6 里用的 I64)  
12. 浮点数的内部数据描述支持个什么新标准来着, 这个可以用 #pragma 什么的去指定  
13. 除了已经有的 __line__ __file__ 以外, 又支持了一个 __func__  
,可以得到当前的函数名, 这个 gcc 好象早就有了  
14. 对于非常数的表达式,也允许编译器做化简  
15. 对于 / % 负数上的定义, 总算改成了我最希望的形式  
比如原来 -22 / 7 = -3, -22 % 7 = -1  
现在 -22 / 7 = -4, -22 % 7 = 6  
为了这个问题, 我以前老自己定义一个 DIV 和 MOD 宏或 inline 函数 ;(  
16. 那个不写函数返回类型, 默认就是 int 的规定取消了.  
再这么写就不通过了  
17. 以前我偏爱 C 的时候, struct 定义的最后一个数组的长度喜欢写 [0], 在  
C++ 里是通不过的. C99 这次把这种做法统一规定写 [] (既不写长度描述)  
18. 为了方便宏或者代码生成器, 如果你写 const const int i; 是不出错的,  
当成 const int i; 处理  
19. 增加和修改了一些标准头文件, 比如定义 bool 的 <stdbool.h>    
定义一些标准长度的 int 的 <inttypes.h>    
定义复数的 <complex.h>    
定义宽字符的 <wctype.h>    
有点泛型味道的数学函数 <tgmath.h>    
跟浮点数有关的 <fenv.h>    

<stdarg.h> 里多了一个 va_copy 可以复制 ... 的参数    
<time.h> 里多了个 struct tmx 对 struct tm 做了扩展    

输入输入对宽字符还有长整数什么的做了相应的支持    


欢迎补充写漏的东西 :)  

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058