打印

关于静态变量的问题

[复制链接]
3346|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();便不会再初始化了。

使用特权

评论回复
5
yewuyi| | 2011-9-18 10:17 | 只看该作者
到目前为止,俺还没见到不支持静态变量的C编译器,所以C30肯定也是支持的。

至于,你的代码为什么不正常工作,那只能再分析了,你可以先自己查阅静态变量的各项定义,对照自己的代码仔细检查,如果还不能解决问题,可以写一个测试代码并把项目文件打包传上来让大家编译看看。

使用特权

评论回复
6
airwill| | 2011-9-22 12:03 | 只看该作者
呵呵, 楼主你在 4 楼的回复正好就说明了函数里的 static 类型变量的特性!
就是这样子的.  
如果不清楚这个特性, 赶快恶补一下 C 语言吧

使用特权

评论回复
7
Light_David| | 2011-9-23 00:59 | 只看该作者
3楼C语言基础没毕业,PICC16静态变量完全没问题,C30不知道,关注。

使用特权

评论回复
8
XIEYUANBIN| | 2011-9-23 09:05 | 只看该作者
C30我一直在用,没发现问题。

使用特权

评论回复
9
XIEYUANBIN| | 2011-9-23 09:06 | 只看该作者
静态变量也试过了,我估计你程序中可能有问题了。

使用特权

评论回复
10
xwhua188| | 2011-9-23 09:34 | 只看该作者
静态变量肯定可以的。我用C30有那么久了。

使用特权

评论回复
11
liang7143| | 2011-9-23 09:49 | 只看该作者
问题 应该不是 这个 静态变量惹的祸!

使用特权

评论回复
12
ldk060| | 2011-9-25 08:49 | 只看该作者
看了下C语言课本,果然是正如四楼说的,俺说错了:'(

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

311

帖子

1

粉丝