keil C 里的中断服务函数里 局部变量是不是相当全局变量 能不能释放

hollandjzy 2010-03-19 08:43:13
keil C 里的中断服务函数里 局部变量是不是相当全局变量 能不能释放
...全文
595 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy330206 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hollandjzy 的回复:]
那我将int_test 如果放在 中断里 编译 (就像上面那个代码一样)和放在main里 编译 放在中断里编译的程序在DATA 区大
[/Quote]
????
cy330206 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 hollandjzy 的回复:]
keil C 里的中断服务函数里 局部变量是不是相当全局变量 能不能释放
[/Quote]


不是的,,局部变量就是局部变量不能当做全局变量来用的,会随着中断程序的推出,局部变量是会释放的
,,,
hollandjzy 2010-03-19
  • 打赏
  • 举报
回复
那我将int_test 如果放在 中断里 编译 (就像上面那个代码一样)和放在main里 编译 放在中断里编译的程序在DATA 区大
悠然红茶 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hollandjzy 的回复:]
int_test 里面的局部变量 是不是受保护的?
[/Quote]
没看到受什么保护。
hollandjzy 2010-03-19
  • 打赏
  • 举报
回复
int_test 里面的局部变量 是不是受保护的?
用户 昵称 2010-03-19
  • 打赏
  • 举报
回复
int_test里面肯定不是全局变量。中断中的占据全局变量的位置,但是外部不能访问吧,没试过。
hollandjzy 2010-03-19
  • 打赏
  • 举报
回复
void INT1(void) interrupt 2
{
unsigned char a;
a=0;
int_test();
SFRPAGE = old_SFRPAGE;

}
void int_test()
{
unsigned char b;
b=1;
}
上面的两个代码中变量 a 和b是不是相当于全局变脸
悠然红茶 2010-03-19
  • 打赏
  • 举报
回复
应该确定是不是static变量,需要看到代码才好说。
用户 昵称 2010-03-19
  • 打赏
  • 举报
回复
俺脚着是这样的,这个变量占用的地址始终不变,但是外部不能访问,跟全局变量差不多。那应该上就不能释放了。
kevinyujm 2010-03-19
  • 打赏
  • 举报
回复
可以明确告诉你,a, b都是局部变量,不是全局变量,局部变量位于栈中,栈的内容是随着函数的执行而发生变化的。至于DATA区变大的问题,应该与变量无关,而与该函数是否是中断服务程序有关。你可以使用空函数来测试二者的区别。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧