非自动变量(Non-automatic variables) 有人给解释一下这个东西吗

灰飞-ing   2010-11-26 10:17 楼主

一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 有人给解释一下这个东西吗

来自电子工程师技术交流(12425841)

回复评论 (9)

自动变量,就是普通的局部变量
相对于静态变量而言的

这个概念是c语言的作者提出来的

非自动变量有两种,一种是全局变量,一种是静态变量
点赞  2010-11-26 10:23
就是看一篇文章关于volatile解释的,,这一块有点模糊

不是很理解

这个非自动 具体意义不理解
点赞  2010-11-26 10:23
其实不用太深究,自动的意思就是在一定的作用域内会自动消亡

非自动就是不会自己释放内存,每次访问改变值后,值会一直保存在那里
点赞  2010-11-26 10:24
也就是个全局变量。。如果这个被定义为votatile。。
点赞  2010-11-26 10:24
可以使全局变量,也可以是静态变量
点赞  2010-11-26 10:24
有一个问题就是votatile的定义,说是可能被非应用程序的其他东西改变

我是想这个其他东西包括中断吗?

这个所谓的应用程序中是否也有中断
点赞  2010-11-26 10:24
一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)

大概意思是这个变量除了中断服务子程序会使用外,还有其他函数也会使用。
点赞  2010-11-26 10:24
votatile的意思是防止编译器优化你的代码,
譬如你再main里面定义了一个变量,而这个变量又被赋值到一个拷贝里,同时,中断函数又要调用这个函数

这时候,中断函数很有可能访问的仅仅是这个变量的拷贝
点赞  2010-11-26 10:24
自动变量就是只有该函数会使用
点赞  2010-11-26 10:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复