2407这样简单的程序都有问题,请教高手

林hh   2007-7-12 07:22 楼主
#include \"2407C.h\"



initial()
{
   
        *IMR=0x0000;
        *IFR=0x0FFFF;
       
        *SCSR1=0x0285;
        *WDCR=0x006F;
        *WSGR=0x0000;

}



         
void main(void)
{
   
       
    initial();
   
    int i=0x01;

        port000C=i;
          
}
build后提示如下:
\"test.c\", line 59: [F001] syntax error at or near symbol \'int\'
\"test.c\", line 61: [F108] \'i\' undefined
是变量的定义有问题吗?
请高手指点!

回复评论 (7)

把 int i 的声明放到 main 开头就行了。

void main(void)
{
int i=0x01;
    initial();
    port000C=i;
           
}
点赞  2007-7-13 02:29

谢谢

如你所说,问题解决了,是不是所有的变量都要放到main的开头来声明?
点赞  2007-7-13 02:31
       在C语言中,函数内的自动变量是不是必须在开头定义?我在手册中一直没找到这句话,所以不敢下结论。但是所读过的程序中,人人都是在开头定义自动变量,好像没有例外。
点赞  2007-7-13 02:38

还有一个问题请教

看了一下C语言的书,也只是强调对于变量要先定义,后使用,没有强调一定要在函数的开始定义,为了安全还是要放在开始吧
另外我编译后出现如下warning:
warning: creating output section vectors without SECTIONS specification
不知道是怎么回事,中断向量表是asm文件,段名为vectors,在。cmd中如下:
PAGE 0:  VECS:    origin =00000h, length =00040h
.vectors > VECS   PAGE 0
有什么问题吗?
点赞  2007-7-13 02:54

ok了

我把。 vectors > VECS   PAGE 0 中的。去掉后就可以了,

点赞  2007-7-13 03:03
   找到了:“变量的声明(包括初始化)除了可以紧跟在函数开始的花括号之后,还可以紧跟在任何其他标志复合语句开始的左花括号之后。”,所以写成:
void main(void)
{
    initial();
      {
i      nt i=0x01;

        port000C=i;
     }
           
}

也是允许的。
点赞  2007-7-13 06:30

厉害

对于有的问题看来还是要追根到底搞清楚啊,对整个编程都有帮助,要不然中间突然想用一个临时变量,还要到开头去定义,太麻烦了
点赞  2007-7-14 03:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复