C++基础

变量的声明和定义有什么区别

为变量分配地址和存储空间的称为定义,不分配地址的称为声明。

一个变量可以在多个地方声明, 但是只在一个地方定义。

例如外部变量,加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。

写一个“标准”宏 MIN

#define min(a,b)((a)<=(b)?(a):(b)) 

volatile关键字

volatile关键字可以用来提醒编译器使用volatile关键字声明的变量随时有可能改变,因此编译器在代码编译时就不会对该变量进行某些激进的优化,故而编译生成的程序在每次存储或读取该变量时,都会直接从内存地址中操作数据。

相反,如果该变量没有使用volatile关键字进行声明,则编译器可能会优化读取和存储操作,可能暂时使用寄存器中该变量的值,而如果这个变量由别的程序(线程)更新了的话,就会出现(内存中与寄存器中的)变量值不一致的现象。

简而言之,具有三种特性:易变的不可优化的顺序执行的

最后更新于