keil c语言已经定义变量老是提示没定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil c语言已经定义变量老是提示没定义相关的知识,希望对你有一定的参考价值。

#include<reg52.h>
#include<intrins.h>
#include"delay.h"
#define int code a[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00

sbit Dp=P0^3; //1= 7f;2= bf;3=df;4=ef;5=f7;6=fb;7=fd;8=fe
sbit Mc1=P2^5;
sbit Mc2=P2^7;
void main()
P0=0xff;
Mc1=0;
Mc2=0;
ACC=0x7f;
int i=0;
while(1)
for(i=i;i>i+8;i++)
Mc1=1;
P0=a[i];
Mc1=0;
Mc2=1;
P0=ACC;
ACC=P0;
ACC=_cror_(ACC,1);
Mc2=0;

if(i>9)
i-=9;

#define int code a[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00

错误的地方太多了。首先上面这句的#define去掉。

其次在keil里面声明语句必须在所有赋值语句之前,想这句

int i=0;

必须放到main函数的第一句。

其它的有没有还没有细看。

参考技术A //你对int进行了宏定义,这里你想做什么呢?
#define int code a[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00

....
int i = 0; 
/// 上句因为你对int进行了宏定义,这句被替换成:
/// code a[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00 i = 0; 
/// 造成语法错误
....

参考技术B 应该是少了一个花括号(“”),在最后位置 参考技术C int i=0;
while(1)
for(i=i;i>i+8;i++)
这部分有问题,把 i 赋值给 i 不对。
参考技术D for(i=i;i>i+8;i++)
i等于i了,这么粗心啊。

以上是关于keil c语言已经定义变量老是提示没定义的主要内容,如果未能解决你的问题,请参考以下文章

Keil中C语言模块化编程时全局变量、结构体处理细节

单片机Keil C51 C语言多文件如何使用全局位变量?跪拜!!

keil51中如何用C语言定义寄存器的地址并给地址赋值

51单片机,keil 软件 C语言问题(我错在哪了)

C语言 keil中的错误 高手啊

使用keil编程常遇到c语言问题;main被重复定义了,如何破?