auto register volatile 比较总结

1)          auto

auto变量就是局部变量,一般不用加auto。自动的意思是自动作用域,自动离开作用域

 

2)          register

register变量是提示编译器尽量放在寄存器中保存,以增加

速度。

  • 只能定义局部的register变量,或者作为函数参数,没有全局或静态的。

 

  • C语言中是不能对register变量取地址的,因为它没有虚地址,在寄存器里。而C++中,它是可以取址的,这时,C++编译器不会把它放到寄存器里。

 

todo测试)

  • 一般不建议使用register,相信编译器能够做的更好。

 

3)          volatile

  • volatile变量

告诉编译器,别对这个变量做任何优化,因为它随时都会改变。

 

比如,多线程中,共同访问一个变量,如果编译器对其优化(放在寄存器中是优化的一种),第二次读时可能直接读寄存器中的值,而另外一个线程(或中断)改了变量,结果读出来的值是旧的。

 

它和const/register是类相反的,const是告诉编译器这是不可改变的,可以优化。而register直接告诉编译器将变量存入寄存器中。

 

 

 

 

源文档 <http://blog.csdn.net/yeming81/article/details/5637717>

posted @ 2012-03-08 13:02  os66  阅读(291)  评论(0编辑  收藏  举报