找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 7931|回復: 7
收起左側

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

[復制鏈接]
ID:851163 發(fā)表于 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:798201 發(fā)表于 2021-1-15 15:57 | 顯示全部樓層
void SEG_init()  定義數據類型了嗎???????????
回復

使用道具 舉報

ID:824490 發(fā)表于 2021-1-15 16:04 | 顯示全部樓層
本帖最后由 名字不是重點 于 2021-1-15 16:08 編輯

  void main(void)
{
     int i;                                                   //L98        while(1)
        {
              SEG_init();                                        //L97
              
這2行調整一下位置就OK了,因為聲明、定義、常數等要放在代碼的前邊

回復

使用道具 舉報

ID:851163 發(fā)表于 2021-1-17 11:29 | 顯示全部樓層
名字不是重點 發(fā)表于 2021-1-15 16:04
void main(void)
{
     int i;                                                   //L98        whi ...

我知道這樣改,但是這個原因嗎?為什么以前C語言里面,直接在for語句里面定義i都沒問題,C51里面不行?問一下
謝謝
回復

使用道具 舉報

ID:21783 發(fā)表于 2021-1-17 14:57 | 顯示全部樓層
荒野Contra 發(fā)表于 2021-1-17 11:29
我知道這樣改,但是這個原因嗎?為什么以前C語言里面,直接在for語句里面定義i都沒問題,C51里面不行?問 ...

C51的變量定義只能在函數開始的地方,C99以后支持任意地方定義,但是C51不支持
回復

使用道具 舉報

ID:851163 發(fā)表于 2021-1-19 10:08 | 顯示全部樓層
wofei1314 發(fā)表于 2021-1-17 14:57
C51的變量定義只能在函數開始的地方,C99以后支持任意地方定義,但是C51不支持

好的,知道了!蟹蟹
回復

使用道具 舉報

ID:366344 發(fā)表于 2021-5-26 19:39 | 顯示全部樓層
先定義I,之后在使用,定義在所有函數最前面
回復

使用道具 舉報

ID:160500 發(fā)表于 2021-5-26 19:45 | 顯示全部樓層
c不支持,c++可以
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表