inline
它的作用是编译的时候将函数展开,把函数的代码复制到每一个调用该函数的地方。这样调用该函数的地方就可以直接执行函数代码,而不发生跳转、压栈(指的就是递归)等一般性函数操作。可以节省时间,也会提高程序的执行速度。
最好是加上static然后放在头文件中。
在嵌入式开发中,内联函数还是比较重要的,将一些功能简洁的函数定义为内联函数,可以减少代码的跳转和栈空间的使用,RAM在嵌入式系统中还是比较宝贵的。
缺点:程序占用的空间会变大,因为会多一个内联函数的拷贝
volatile
易变的,希望编译器去注意该变量的状态,时刻注意该变量是易变的,每次读取该变量的值都重新从内存中读取。
常常和编译器优化相关。比如编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。此时需要用到volatile,告诉编译器读取的时候去内存读。
static
c++ | 补基础 | static与const_tuuzkiii_Tuu的博客-CSDN博客
static_cast
强制转换类型
void* p;
char* ptr = static_cast<char*> p;
// 把void指针转换为char指针
union
和结构体定义类似,比如一个union包含int,char,longlong,但union的长度 = 里面最长元素的长度,因此同一时刻union只能存1种数据
register
声明的变量会尽可能保存在寄存器中。’尽可能‘是因为寄存器数量有限不一定能存进去
typedef
typedef oldname newname
sizeof
没想到吧sizeof也是关键字
extern
引用另一个文件中的全局变量/函数
一般作用是,在a.cpp中定义全局变量,然后在.h文件中extern 这个变量,则其他cpp只要包含这个.h就都可以使用这个全局变量