C51 的 KEIL 存在一些错误问题,例如接近无符号的语法错误

问题描述 投票:0回答:2

我正在使用 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): error C141: 'unsigned' 附近的语法错误。我不知道为什么会发生这种事!非常感谢!

keil 8051 c51
2个回答
4
投票

在函数开始处的任何其他代码之前声明变量:

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

这是一个旧的 C 编译器限制,在 Keil C51 中从未被删除。


0
投票

我们需要输入这段代码

uchar a,i,j;

到整个代码的第一位, 因为 Keil 的 C 编译器太老了,有点虚拟。 这就是为什么我们必须在函数开始时在任何其他代码之前声明变量

© www.soinside.com 2019 - 2024. All rights reserved.