分享

【连载】(C语言这些关键词你都知道吗?)——乐创DIY C语言讲义——4.7节

 乐创客搬运工 2021-01-27

4.7 C语言关键词一览

讲到上述最后一个内容为止,我们在之前学习的代码中或多或少地学习了一些C语言的关键词,但是这些关键词都是零散地介绍的。本节内容,将系统地将C语言中的关键词进行罗列讲解。
早在C90时候,即第一版本的ISO C语言里面,一共包含了32个关键词,这些关键词在绝大多数的C语言书里面都会讲解,也是我们平时使用频率很高的一些关键词。如图4-7-1所示。
                           

图4-7-1 C89/C90中的关键词

后来到C99更新标准的时候,对C90中的关键词进行了扩充,此次扩充的关键词数量为5个,分别覆盖了数据类型的扩充,函数定义的扩充和指针限定等方面。C99新增的5个关键词如图4-7-2所示。

图4-7-2 C99新增的5个关键词

_Complex和_Imaginary关键词,增加了C语言对复数的支持,包含标准头文件“<complex.h>”后,我们就可以用 complex来代表 _Complex,用imaginary来代表 _Imaginary,以及用“_Complex_I”或者大写字母“I”来代表虚数单位 i,也就是 -1的平方根。
_Bool关键词,补充了C语言对布尔类型的支持,包含标准头文件<stdbool.h>后,我们可以用 bool 代替 _Bool true 代替 1 false 代替 0 。例如:
bool logic_switch = true;
logic_switch = false;
我们前面所说的C语言中没有表示布尔类型的关键词,也是基于C90所说,因为C99后加的Bool类型关键词,它并不是类似于通常意义上面的原生C语言关键词,需要加入额外的头文件才能支持。
最新的C语言版本C11,在C99的基础上增加了7个关键词,如图4-7-3所示。

图4-7-3 C11中增加的7个关键词

这些关键词中,_Alignof给出指定数据类型内存对齐的字节数,如double8字节对齐,其内存地址都是8的整数倍。_Alignas关键字指定某个变量按照其他数据类型对齐,如char正常按1字节对齐,可指定按short类型的2字节对齐。
_Atomic关键词是针对多线程的原子操作而增加的关键词。
  _Static_assert关键词是用于编译期间的断言,因此也称为静态断言。
_Noreturn表明调用完成后函数不返回主调函数。注意,这与void返回类型不同。void类型的函数在执行完毕后返回主调函数,只是它不提供返回值。
_Thread_local为线程存储类限定符。
_Generic提供一种基于控制表达式的类型,在编译时选择数个表达式之一的方法。
对于C11标准,我们在平时做C语言设计时,用的非常少,因为对于单片机开发来说,其程序设计比较简单,基本用不到C11中新增的功能。而对于Linux开发来说,底层程序开发都是基于GNU C语言的,而GNU C语言对标准C语言又有很多扩展,甚至C11中某些新特性是从GNU C中借鉴过来的。
我们在指定GCC编译器编译C语言版本时,可以使用后缀命令-std=c11,来使编译器支持C11版本。如:
-std=c++11,支持C++11标准;
-std=gnu++11,支持C++11标准和GNU扩展特性;
因此我们编译时,指定C语言版本,可以直接使用命令:
gcc -o 程序名源文件.c -std=c11。
我们后续的内容,基本都是基于C99来讲述的,对于使用到C11特性或者GNU扩展,在使用时会做必要的说明。

有关C99中各个关键词的详细讲解,我们在学完指针和结构体之后会做一个完整的梳理。
有关C语言各个版本特性比较以及各个新增关键词的使用,我们将会做成精品栏目推送。


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多