volatile
volatile int i = 10;
volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。
volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)
const 可以是 volatile (如只读的状态寄存器)
指针可以是 volatile
assert()
断言,是宏,而非函数。assert 宏的原型定义在 《assert.h》(C)、《cassert》(C++)中,其作用是如果它的条件返回错误,则终止程序执行。可以通过定义 NDEBUG 来关闭 assert,但是需要在源代码的开头,include 《assert.h》 之前。
assert() 使用
#define NDEBUG // 加上这行,则 assert 不可用#include 《assert.h》
assert( p != NULL ); // assert 不可用
sizeof()
sizeof 对数组,得到整个数组所占空间大小。
sizeof 对指针,得到指针本身所占空间大小。
#pragma pack(n)
设定结构体、联合以及类成员变量以 n 字节方式对齐
#pragma pack(n) 使用
#pragma pack(push) // 保存对齐状态#pragma pack(4) // 设定为 4 字节对齐
struct test{ char m1; double m4; int m3;};
#pragma pack(pop) // 恢复对齐状态
编辑:jq
全部0条评论
快来发表一下你的评论吧 !