Skip to content

Latest commit

 

History

History
17 lines (9 loc) · 1.51 KB

File metadata and controls

17 lines (9 loc) · 1.51 KB

18、 volatile 和 extern 关键字

volatile 三个特性

易变性:在汇编层⾯反映出来,就是两条语句,下⼀条语句不会直接使⽤上⼀条语句对应的 volatile 变量的寄存器内容,而是重新从内存中读取。

不可优化性: volatile 告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,⼀定会被执行。

顺序性:能够保证 volatile 变量之间的顺序性,编译器不会进行乱序优化。

extern

在 C 语⾔中,修饰符 extern 用在变量或者函数的声明前,来说明 “此变量/函数是在别处定义的,要在此处引⽤”。

注意 extern 声明的位置对其作⽤域也有关系,如果是在 main 函数中进⾏声明的,则只能在 main 函数中调用,在其它函数中不能调用。其实要调用其他文件中的函数和变量,只需把该⽂件⽤ #include 包含进来即可,为啥要⽤ extern?因为⽤ extern 会加速程序的编译过程,这样能节省时间。

在 C++ 中 extern 还有另外⼀种作⽤,⽤于指示 C 或者 C++函数的调⽤规范。⽐如在 C++ 中调⽤ C 库函数,就需要在 C++ 程序中⽤ extern “C” 声明要引⽤的函数。这是给链接器 ⽤的,告诉链接器在链接的时候⽤C 函数规范来链接。主要原因是 C++ 和 C 程序编译完成 后在⽬标代码中命名规则不同,⽤此来解决名字匹配的问题。