找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7875|回复: 7
收起左侧

为什么会提示:main.c(98): error C141: syntax error near 'int'?

[复制链接]
ID:851163 发表于 2021-1-15 10:48 | 显示全部楼层 |阅读模式
为什么这一段会报错 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. }
复制代码
回复

使用道具 举报

ID:851163 发表于 2021-1-17 11:29 | 显示全部楼层
名字不是重点 发表于 2021-1-15 16:04
void main(void)
{
     int i;                                                   //L98        whi ...

我知道这样改,但是这个原因吗?为什么以前C语言里面,直接在for语句里面定义i都没问题,C51里面不行?问一下
谢谢
回复

使用道具 举报

ID:851163 发表于 2021-1-19 10:08 | 显示全部楼层
wofei1314 发表于 2021-1-17 14:57
C51的变量定义只能在函数开始的地方,C99以后支持任意地方定义,但是C51不支持

好的,知道了!蟹蟹
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表