关于静态变量的问题

[复制链接]
3997|11
 楼主| 福州观沧海 发表于 2011-9-18 07:32 | 显示全部楼层 |阅读模式
当我在函数内部定义静态变量时发现这个变量并没有有效工作(似乎没有**功能)。可是对我把静态变量换成全局变量时就正常了。问题是解决了,但是不知如何解释。是否与编译器有关?(单片机C30编译PIC器)
 楼主| 福州观沧海 发表于 2011-9-18 08:03 | 显示全部楼层
void adc (void)
{
     static unsigned int ad=0;
     ....
}
ldk060 发表于 2011-9-18 08:39 | 显示全部楼层
当调用函数adc(void)时,即使**了ad的数值,函数首先执行ad=0,,这时就把ad初始化为0了,
 楼主| 福州观沧海 发表于 2011-9-18 09:10 | 显示全部楼层
这不是问题所在,定义静态变量只会初始化一次。之后每次调用ad();便不会再初始化了。
yewuyi 发表于 2011-9-18 10:17 | 显示全部楼层
到目前为止,俺还没见到不支持静态变量的C编译器,所以C30肯定也是支持的。

至于,你的代码为什么不正常工作,那只能再分析了,你可以先自己查阅静态变量的各项定义,对照自己的代码仔细检查,如果还不能解决问题,可以写一个测试代码并把项目文件打包传上来让大家编译看看。
airwill 发表于 2011-9-22 12:03 | 显示全部楼层
呵呵, 楼主你在 4 楼的回复正好就说明了函数里的 static 类型变量的特性!
就是这样子的.  
如果不清楚这个特性, 赶快恶补一下 C 语言吧
Light_David 发表于 2011-9-23 00:59 | 显示全部楼层
3楼C语言基础没毕业,PICC16静态变量完全没问题,C30不知道,关注。
XIEYUANBIN 发表于 2011-9-23 09:05 | 显示全部楼层
C30我一直在用,没发现问题。
XIEYUANBIN 发表于 2011-9-23 09:06 | 显示全部楼层
静态变量也试过了,我估计你程序中可能有问题了。
xwhua188 发表于 2011-9-23 09:34 | 显示全部楼层
静态变量肯定可以的。我用C30有那么久了。
liang7143 发表于 2011-9-23 09:49 | 显示全部楼层
问题 应该不是 这个 静态变量惹的祸!
ldk060 发表于 2011-9-25 08:49 | 显示全部楼层
看了下C语言课本,果然是正如四楼说的,俺说错了:'(
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

311

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部