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个关键字

基本关键字

clip_image002

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

发表评论