KEIL для C51 и есть некоторые проблемы с ошибкой, такие как синтаксическая ошибка рядом с неподписанным

Я работаю с Keil для 80C51, и я использую C51 для кодирования. Тем не менее, у меня есть некоторые проблемы при компиляции. Мой код выглядит следующим образом:

#include <reg51.h>

#define uchar unsigned char
#define LED P2
sbit SH=P0^0;
sbit DATA=P3^0;
sbit CLK=P3^1;


void main()
{
  SCON=0x10;
    uchar a,i,j;
    while(1){
        a=0;
        SH=0;
        SH=1;
        for (i=0;i<8;i++){
            CLK=0;
            for (j=0;j<500;j++);
            DATA=0;
            CLK=1;
            for (j=0;j<500;j++);
            a=a<<1;
            a=a+(uchar)DATA;
        }
        LED=a;
    }
}

Но компилятор показывает, что lab7.c(13): ошибка C141: синтаксическая ошибка рядом с "unsigned". Я понятия не имею, почему это произойдет! Большое спасибо!

2 ответа

Решение

Объявите ваши переменные перед любым другим кодом в начале функции:

void main()
{
    uchar a,i,j;
    SCON=0x10;
    while(1){ 
    /* ... */

Это старый предел компилятора C, который никогда не был удален в Keil C51.

нам нужно поместить этот код

      uchar a,i,j;

на первое место среди всех ваших кодов, потому что компилятор C Кейла настолько стар, что кажется немного глупым. Вот почему мы должны объявлять наши переменные перед любым другим кодом в начале функции.

Другие вопросы по тегам