C\C++标准及各编译器的支持情况
C语言关键字(32+)
基本的有32个保留关键字(Reserved Keywords),后续的C99和C11标准又增添了一些关键字。
32个保留关键字(C89)
char | short | int | unsigned |
long | float | double | struct |
union | void | enum | signed |
const | volatile | typedef | auto |
register | static | extern | break |
case | continue | default | do |
else | for | goto | if |
return | switch | while | sizeof |
注意: sizeof是关键字,而不是函数或者宏
C99标准新增关键字
_Bool | _Complex | _Imaginary | inline | restrict |
_Bool与C++中的bool类型相同,值为0或1,定义在<stdbool.h>中
_Complex和_Imaginary用于定义复数类型。
inline与C++中的inline相同,内联支持。
restrict用于修饰指针。
C11标准新增关键字
_Alignas | _Alignof | _Atomic | _Generic |
_Noreturn | _Static_assert | _Thread_local |
主要来源:维基百科“C语言”
C语言版本演变
K&R C
1978年, Dennis Ritchie (丹尼斯 里奇,C语言之父)和 Brian Kernighan 发表著作the C Programming Language第一版。书中介绍的C语言被称为“K&R C”
C89(ANSI C)
1989年,ANSI将C标准化。与K&R C相比,主要改动有:1.增加了真正的标准库;2. 增加新关键字const,volatile,signed;3. 函数原型和声明的变化;等等
C99
1999年。主要特性有:1. 新增关键字(见上,inline);2. 支持单行注释//;3. 支持long long;4. 取消函数默认返回类型为int的规定;支持不定长数组;等等
C11
2011年。提高了对C++的兼容性。主要特性有:1. 多线程的支持;2. 增强Unicode支持;等等
C++关键字(63+)
基本的关键字为63个,C++11标准又新增了10个关键字
基本关键字
C++11新增关键字
alignas | alignof | char16_t | char32_t | constexpr |
decltype | nonexcept | nullptr | static_assert | thread_local |
可见与C11中新增关键字类似。
C、C++关键字比较(不包括新增)
粗体为C++特有的。
asm | auto | bool | break | case | catch | char |
class | const | const_cast | continue | default | delete | do |
double | dynamic_cast | else | enum | explicit | export | extern |
false | float | for | friend | goto | if | inline |
int | long | mutable | namespace | new | operator | private |
protect | public | register | reinterpret_cast | return | short | signed |
sizeof | static | static_cast | struct | switch | template | this |
throw | true | try | typedef | typeid | typename | union |
unsigned | using | virtual | void | volatile | wchar_t | while |
C++语言版本演变
Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普,C++之父),上世纪80年代,贝尔实验室。最初名为“C with Classes”,1983年改名C++。
C++98
1998年,ANSI-ISO将其标准化。引入了C++标准库(包括标准模板库STL和C标准库的修改版)。
C++03
2003年,发布了C++标准的修订版本。称为C++03。
TR1
2005年,发布了一份名为Library Technical Report 1(简称TR1)的技术报告,TR1不属于官方C++标准,但是后续可能纳入标准。TR1主要包括:正则表达式、智能指针、哈希表、随机数生成器等。
C++11
2011年,目前的最新标准,多数编译器还没有很好的支持。主要特性有:支持Lambda表达式、对象类型自动推导、空指针nullptr、统一初始化语言、auto意义变化、register视为过时、export 取消其意义仅保留关键字…
主要来源:维基百科“C++”
编译器的支持情况
目前最符合和接近C++标准的编译器有为 GNU GCC 4.5.0 和 Visual Studio 2010 等;VC++ 6.0 对标准支持的不是很好,这一部分详见我的其他博文。void main(){}是MicroSoft 公司的用法,不符合C++规范。
——————————————————————–
该文2011-04-23 13:07首发于我的CSDN专栏。有改动。
作者:JarvisChu
原文链接:C\C++标准及各编译器的支持情况
版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0