c89专题

c89、c99、c11

C99 标准开始引入了 // 单行注释。在此之前,C语言只支持 /* ... */ 多行注释。 具体说明: // 单行注释:在C99标准(ISO/IEC 9899:1999)引入之前,C语言中没有单行注释。C99标准借鉴了C++的注释风格,引入了这种单行注释。/* ... */ 多行注释:自C语言的早期版本(包括C89和ANSI C)以来就已经存在。 示例: 在C99之前(例如,使用ANS

C89与C99标准比较

1、增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。 如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,

C99的指定初始化转化为C89?用(a|e)?bnf实现吧,写个玩玩

用了自己实现的ebnf小库,没有实现捕获组,被迫用lambda捕获了若干临时变量。 熟悉bnf的,把它翻到自己熟悉的工具上,应该不困难。 struct MemberInfo {     string     type;      string     name;     deque<int> arrSizes; };  struct InitValue {

C89语言标示符名字空间

以下摘自:ISO-IEC-9899-1999.pdf 6.2.3 If more than one declaration of a particular identifier is visible at any point in a translation unit, the syntactic context disambiguates uses that refer to differen