ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# C99功能特性 为了与C语言标准保持高度的兼容性,在C标准委员会的协助之下,一些细小的改变被引入到C++0x中。 * long long * 扩展的整型数据类型(例如,关于可选的更长的整型数的规则) * 关于UCN的改变[N2170==07-0030]: 解除了”字符常量/字面字符串中不得使用控制/基本的通用字符名”的限制 ``` // 译注: C++03中允许通过\uNNNN的形式 // 在字符/字符串中引入非ASCII字符(Unicode) // 但是控制字符以及基本的英文字母、数字、符号等 // 小于0x00A0的字符(与ASCII兼容)不在此列。 // 而在C++11中,这一限制被进一步放开 // OK in C++03 and C++11 const char* str1 = “Hello \u3366”; // Err in C++03, OK in C++11 const char* str2 = “Hello \u0033”; ``` * 宽/窄字符串的连接 * Not VLAs(变长数组) 添加了一些扩展的预处理规则 * __func__ a该宏经过宏展开(宏替换)后即为当前函数名 * __STDC_HOSTED__ * _Pragma: _Pragma( X ) 扩展成#pragma X * 支持可变长度参数的宏(通过不同数目的参数对宏进行重载) ``` #define report(test, …) ((test)?puts(#test):printf(_ _VA_ARGS_ _)) ``` * 空的宏参数 标准库中的很多功能组件都是继承自C99(从本质上来说,所有C99的库的改变都是从C89继承而来的) 参考: Standard: 16.3 Macro replacement. [N1568=04-0008] P.J. Plauger: PROPOSED ADDITIONS TO TR-1 TO IMPROVE COMPATIBILITY WITH C99.