标题: 为什么会提示:main.c(98): error C141: syntax error near 'int'? [打印本页]

作者: 荒野Contra    时间: 2021-1-15 10:48
标题: 为什么会提示:main.c(98): error C141: syntax error near 'int'?
为什么这一段会报错 syntax error near 'int' (其中SEG_init是数码管初始化,LED_init是LED初始化,其他部分见后面)
然后后面都是main.c(98): error C202: 'i': undefined identifier

但我把97行与98行交换之后就不报错了,这个问题遇到好多次了,倒都知道怎么改,但不知道为什么错。还有直接在for语句里面(int i=0......)也报错求知!谢谢

uchar num[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
void main(void)
{
        while(1)
        {
                SEG_init();                                        //L97
                int i;                                                   //L98
                for(i=9;i>=0;i--)
                {
                        P0 = num[ i];
                        delayms(1000);
                }
                LED_init();
                P0=0xFE;
                delayms(1000);
        }
}


其他部分如下:
  1. #include <STC15F2K60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. void delayms(int ms)                //延时函数ms
  5. {
  6.         int i,j;
  7.         for(i=0;i<ms;i++)
  8.                 for(j=0;j<845;j++);
  9. }

  10. void LED_init()
  11. {
  12.         P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
  13. }

  14. void SEG_init()
  15. {
  16.         P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
  17. }
复制代码

作者: zwf33    时间: 2021-1-15 15:57
void SEG_init()  定义数据类型了吗???????????
作者: 名字不是重点    时间: 2021-1-15 16:04
本帖最后由 名字不是重点 于 2021-1-15 16:08 编辑

  void main(void)
{
     int i;                                                   //L98        while(1)
        {
              SEG_init();                                        //L97
              
这2行调整一下位置就OK了,因为声明、定义、常数等要放在代码的前边


作者: 荒野Contra    时间: 2021-1-17 11:29
名字不是重点 发表于 2021-1-15 16:04
void main(void)
{
     int i;                                                   //L98        whi ...

我知道这样改,但是这个原因吗?为什么以前C语言里面,直接在for语句里面定义i都没问题,C51里面不行?问一下
谢谢
作者: wofei1314    时间: 2021-1-17 14:57
荒野Contra 发表于 2021-1-17 11:29
我知道这样改,但是这个原因吗?为什么以前C语言里面,直接在for语句里面定义i都没问题,C51里面不行?问 ...

C51的变量定义只能在函数开始的地方,C99以后支持任意地方定义,但是C51不支持
作者: 荒野Contra    时间: 2021-1-19 10:08
wofei1314 发表于 2021-1-17 14:57
C51的变量定义只能在函数开始的地方,C99以后支持任意地方定义,但是C51不支持

好的,知道了!蟹蟹
作者: shijinbede    时间: 2021-5-26 19:39
先定义I,之后在使用,定义在所有函数最前面
作者: liuzx66    时间: 2021-5-26 19:45
c不支持,c++可以




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1