C标准委员会采用的指导方针限制了现有实施尚未测试的新功能的采用。 在开发内存模型方面付出了很多努力,以便阐明序列点并支持线程编程。 从历史上看,Microsoft在其Visual C ++工具中实现新C功能的速度很慢,而主要侧重于支持C ++标准的开发。 然而,随着Visual (C99)ILOLIMIX C ++ 2013的引入,Microsoft实现了C99的有限子集,它在Visual C ++ 2015中进行了扩展。 Member-name(成员名称):对结构进行指定的初始化时,允许采用简单的方法对结构中的指定成员进行初始化。 C99中,程序员可以在for语句的初始化部分定义一个或多个变量,这些变量的作用域仅于本for语句所控制的循环体内。 支持除C99复数和VLA之外的所有功能,以及对switch语句的小限制(没有Duff的设备)。
C99中,复合赋值中,可以指定对象类型的数组、结构或联合表达式,当使用复合赋值时,应在括弧内指定类型,后跟由花括号围起来的初始化列表;若类型为数组,则不能指定数组的大小,建成的对象是未命名的。 (C99)ILOLIMIX 使用A格式修饰符时,x和p必须是大小,A和a格式修饰符也可以用在scanf()函数中,用于读取浮点数,调用printf()函数时,允许在%f说明符前加上I修饰符,即%If,但不起作用。 (C99)ILOLIMIX C99中,该特性对经常使用稀疏数组的程序员十分有用,指定的初始化符通常有两种用法:用于数组,以及用于结构体和共用体。
并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。 C99有一部分是对于增加了宽字符集,还加入了一些库函数,是继C89标准之后的第二个C语言官方标准。 另外,Visual Studio2013也部分支持了C99语法特征。 C99标准的某些部分包含在当前版本的C ++标准中,包括整数类型,标题和库函数。
2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的C语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了C11标准。 当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣。 类型限定符:如果同一限定符在同一说明符限定符列表中出现多次(无论直接出现还是通过一个或多个typedef ),行为与该类型限定符仅出现一次时相同。 在Logiscope 6.3之前,只支持C99的基本结构。 Logiscope 6.4及更高版本正式支持C99。 删除了 gets() (C99)ILOLIMIX 函数,C99中已经将此函数被标记为过时,推荐新的替代函数 gets_s()。
某些C99类型没有计划支持,如_Complex和64位整数(long long)。 包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false (C99)ILOLIMIX 代替 0 。 字符//引入包含直到(但不包括)新换行符的所有多字节字符的注释,除非//字符出现在字符常量、字符串文字或注释中。 新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit()失败时可以做最少的清理工作(deinitializition)。 C11标准是C语言标准的第三版,前一个标准版本是C99标准。
Restrict 指针主要用做函数形参,或者指向由malloc 函数所分配的内存变量。 ANSI于1989年制定了C编程语言的官方标准,并于1990年成为国际标准,C语言规范在一段时间内保持相对静态,而C ++继续发展,主要是在其自身的标准化工作中。 规范修正案1在1995年为C制定了一个新标准,但只是为了纠正1989年标准的一些细节,并为国际字符集增加了更广泛的支持。 该标准在20世纪90年代后期进行了进一步修订,导致1999年出版了ISO / IEC 9899:1999,并于2000年5月作为ANSI标准采用。 (C99)ILOLIMIX 该标准版本定义的语言通常称为“ C99″ 。国际C标准由ISO / IEC (C99)ILOLIMIX JTC1 / SC22/ WG14工作组维护。 C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。 柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存,包含柔性数组成员的结构用malloc函数进行内存的动态分配。
- 未实现完整的C89和C99支持,部分原因是平台限制(MOS技术6502)。
- 然而,随着Visual C ++ 2013的引入,Microsoft实现了C99的有限子集,它在Visual C ++ 2015中进行了扩展。
- 包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。
- 另外,Visual Studio2013也部分支持了C99语法特征。
- 从历史上看,Microsoft在其Visual C ++工具中实现新C功能的速度很慢,而主要侧重于支持C ++标准的开发。
- C99中,复合赋值中,可以指定对象类型的数组、结构或联合表达式,当使用复合赋值时,应在括弧内指定类型,后跟由花括号围起来的初始化列表;若类型为数组,则不能指定数组的大小,建成的对象是未命名的。
另外,C99还引进了 hh 修饰符,当使用d,i,o,u和x格式说明符时,hh用于指定char型参数,II和hh修饰符均可以用于n说明符。 如果宏定义中的identifier__list以省略号结尾,则意味着调用中的参数比宏定义中的参数(不包括省略号)多;否则,宏定义中参数的数目(包括由预处理标记组成的参数)与调用中参数的数目匹配。 对于在其参数中使用省略号表示法的#define预处理指令,在其替换列表中使用标识符__ VA_ ARGS__。 开发人员表示“TCC正朝着完全符合ISOC99的方向发展”。 未实现完整的C89和C99支持,部分原因是平台限制(MOS技术6502)。
C标准委员会认为,编译器诊断无意中遗漏类型说明符比静默处理依赖于隐式int遗留代码更有价值。 (C99)ILOLIMIX 在实践中,编译器可能会显示警告,然后假设为int并继续翻译程序。 关键字static可以出现在函数声明符中参数的数组声明符中,表示编译器至少可以假定许多元素将传递到所声明的函数中,使优化器能够作出以其他方式无法确定的假定。
可变长度数组不属于这些包含的部分,因为C ++的标准模板库已经包含类似的功能。 但是,它们仅通过未记录的命令行开关“-za99”启用。 自从v1.0之前的C90扩展以来,已经捆绑了三个C99功能:C ++样式注释(//),灵活的数组成员,枚举声明中允许的尾随逗号。 标准宏__STDC_VERSION__定义为值199901L,表示C99支持可用。 内联函数除了保持结构化和函数式的定义方式外,还能使程序员写出高效率的代码。 如函数在代码内进行内联扩展,则执行代码时,函数与参数不需进栈与退栈,各种寄存器内容不需保存与恢复。 特别是,缺少类型说明符的声明不再隐含假定的int。
自批准1999 (C99)ILOLIMIX C标准以来,标准工作组编写了技术报告,规定了对嵌入式处理,附加字符数据类型(Unicode支持)和具有改进边界检查的库函数的改进支持。 (C99)ILOLIMIX 继续处理有关十进制浮点,附加数学特殊函数和其他动态内存分配函数的技术报告。 C99中增加了适用于指针的 restrict 类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict 指针表达式才能访问对象。
SEO服務由 Featured 提供