mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
添加位域、修改 volatile
This commit is contained in:
parent
b2059f1a48
commit
ee9e1b00e5
36
README.md
36
README.md
@ -90,17 +90,6 @@ int* const function7(); // 返回一个指向变量的常指针,使用:i
|
||||
|
||||
</details>
|
||||
|
||||
### volatile
|
||||
|
||||
```cpp
|
||||
volatile int i = 10;
|
||||
```
|
||||
|
||||
* volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。
|
||||
* volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)
|
||||
* const 可以是 volatile (如只读的状态寄存器)
|
||||
* 指针可以是 volatile
|
||||
|
||||
### static
|
||||
|
||||
#### 作用
|
||||
@ -150,7 +139,7 @@ inline int functionName(int first, int secend,...) {/****/};
|
||||
|
||||
</details>
|
||||
|
||||
#### 编译器对inline函数的处理步骤
|
||||
#### 编译器对 inline 函数的处理步骤
|
||||
|
||||
1. 将 inline 函数体复制到 inline 函数调用点处;
|
||||
2. 为所用 inline 函数中的局部变量分配内存空间;
|
||||
@ -263,6 +252,29 @@ struct test
|
||||
|
||||
</details>
|
||||
|
||||
### 位域
|
||||
|
||||
```cpp
|
||||
Bit mode: 2; // mode 占 2 位
|
||||
```
|
||||
|
||||
类可以将其(非静态)数据成员定义为位域(bit-field),在一个位域中含有一定数量的二进制位。当一个程序需要向其他程序或硬件设备传递二进制数据时,通常会用到位域。
|
||||
|
||||
* 位域在内存中的布局是与机器有关的
|
||||
* 位域的类型必须是整型或枚举类型,带符号类型中的位域的行为将因具体实现而定
|
||||
* 取地址运算符(&)不能作用于位域,任何指针都无法指向类的位域
|
||||
|
||||
### volatile
|
||||
|
||||
```cpp
|
||||
volatile int i = 10;
|
||||
```
|
||||
|
||||
* volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。
|
||||
* volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)
|
||||
* const 可以是 volatile (如只读的状态寄存器)
|
||||
* 指针可以是 volatile
|
||||
|
||||
### extern "C"
|
||||
|
||||
* 被 extern 限定的函数或变量是 extern 类型的
|
||||
|
Loading…
x
Reference in New Issue
Block a user