为什么用指针会出这种警告?

程序大概类似这样:
#pragma location=0xOOOO
uc8 F11;
uc16 F12;
uc32 F13;
......
......
uc8 F34;
uc8 Verification;

u8 main(void)
{
...
u8 *p,*q, tmp=0;
for (*p=F11,*q=Verification; p<q; p++)
  tmp += *p++;

if (tmp!=Verification)
  校验错误处理程序。

可是为什么会出这种警告:
Warning[Pe549]: variable "p" is used before its value is set

怎样才能消除这种警告呢?

具体是那一行出现这个警告?

TOP

for (*p=F11......)这一行。

TOP

P++后就不是指向原来地址(变量或内容)了。

TOP

variable "p" is used before its value is set

指针p在没有赋初值,就进行了*p操作,这在C语言编程中绝对要禁止的。
1

评分人数

  • binglin

风云色变天地动,
上官金虹现江湖。
席卷天下龙凤环,
囊括四海金钱帮。

TOP

金虹兄是对的,我理解错了指针赋值。
*p=F11 是把F11的值填进P所指的单元,而原来误解为把FF的地址传给P。

p=&F11才是对的。

TOP

野指针要注意。

TOP

好。。。。。。危险。。。。。。

TOP

variable "p" is used before its value is set

指针p在没有赋初值,就进行了*p操作,这在C语言编程中绝对要禁止的。
void_c 发表于 2009-10-3 08:40


学习了,谢谢。

TOP

楼主运气不错!
本来编译器可以不理你,高高兴兴的执行下去的……^_^
砖家级的水准……

TOP

很明显。。。。。

TOP

幸亏提醒了,不然楼主以后会很郁闷找不到问题出在哪里的
一点一滴,积沙成山

TOP

Review opelc.org on alexa.com