C99增加文法特性

发布于 2022-09-19 13:35:19 字数 2176 浏览 22 评论 0

研究了一下C99标准文档,并对照 http://linux.chinaunix.net/bbs/thread-885847-1-1.html 比较了一下下,C99主要增加了下面几个文法特性:

1. declaration_specifiers中增加了function_secifier,也就是增加了inline函数的特性

2. type_specifiers中增加了_Bool,_Complex,_Imaginary,应该是可支持布尔型及复数类型。

3.支持声明可变长度数组类型,
direct-declarator:
identifier           |
( declarator )    |
direct-declarator[ type-qualifier-listopt assignment-expressionopt ]         |
direct-declarator [static type-qualifier-listopt assignment-expression ]     |
direct-declarator[ type-qualifier-list static assignment-expression ]          |
direct-declarator [ type-qualifier-listopt *]                                                 |

direct-declarator( parameter-type-list)                                                      |
direct-declarator( identifier-listopt )                                                           |

中间那段看了好几次没看懂

4.compound_statement 中可在使用变量时再声明,无需再开始就先声明

5.可 for 中初始声明下标变量

6.可直接初始化struct和union内的成员,比如

div_t answer = { .quot = 2, .rem = -1 };

union { /* ... */ } u = { .any_member = 42 };

struct { int a[3], b; } w[] ={ [0].a = {1}, [1].a[0] = 2 };

以及为数组两端赋值:
int a[MAX] = {
          1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文