码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++ 中的特殊关键字:volatile, register, restrict, __attribute__

时间:2015-08-19 17:03:00      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:关键字

1.volatile: 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址(内存)中读取,而不会使用寄存器中的缓存值;

volatile int i=10; 

2.register: 使用修饰符register声明的变量属于寄存器存储类型。该类型与自动存储类型相似,具有自动存储时期、代码块作用域和内连接。声明为register仅仅是一个请求,因此该变量仍然可能是普通的自动变量。无论哪种情况,用register修饰的变量都无法获取地址。如果没有被初始化,它的值是未定的。

3.restrict:关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。

int *restrict x; //只会通过指针 x,对 x 中的值进行修改 

参考:http://blog.csdn.net/lovekatherine/article/details/1891806

4.__attribute__:可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。

extern void myexit() __attribute__((noreturn));//表示函数不存在返回值;编译不会再出现警告信息。

参考:http://blog.csdn.net/ruixj/article/details/4274721

版权声明:本文为博主原创文章,未经博主允许不得转载。

C/C++ 中的特殊关键字:volatile, register, restrict, __attribute__

标签:关键字

原文地址:http://blog.csdn.net/quzhongxin/article/details/47780683

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!