C

volatile 可能我们用的都比较多也比较常见吧,主要就是告诉编译器,每次在使用volatile指定的变量时总是重新去获取他的值,更简单的理解我是这样的,
为了计算某个内容地址所存的内容会把他放入CPU寄存器,为了优化,下一次就直接从寄存器里取值了
volatile就是为了告诉编译器,不管什么情况你都要去内存里重新获取他的内容!!


restrict是C99版新增加的关键字!   如下:

      C99    中新增加了    restrict    修饰的指针: 由    restrict    修饰的指针是最初唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对象的存取都限定于基于由    restrict    修饰的指针表达式中。

      由    restrict    修饰的指针主要用于函数形参,或指向由    malloc()   分配的内存空间。restrict   数据类型不改变程序的语义。   编译器能通过作出    restrict   修饰的指针是存取对象的唯一方法的假设,更好地优化某些类型的例程。


C的五种存储类
自动:
寄存器:register声明 
静态,空链接: static声明
静态,外部链接:在所有函数的外部定义 未使用static修饰
静态,内部链接:在所有函数的外部定义 使用static修饰


volatile restrict 方便编译器优化
volatile 告诉编译器该变量可能被程序或其他代理修改,所有不使用寄存器缓存,直接从内存地址读取
val1=x;
val2=x;
未声明时,val2从寄存器中读取
restrict 

你可能感兴趣的:(C)