标题: 大哥们这个该怎么定义,怎么老是报错error C247: non-address/-constant initializer [打印本页]

作者: 18862511786    时间: 2020-7-31 11:29
标题: 大哥们这个该怎么定义,怎么老是报错error C247: non-address/-constant initializer
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
uchar d1 = P1&0xe3;
uchar code a[]={0xff, 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
void main()
{



}
void delay(uint t)
{        
        uchar a,s;
        for(a=0;a<t;a++)
        for(s=0;s<250;s++);
}



老是出现这个:..\1\1.C(5): error C247: non-address/-constant initializer




作者: zhai1995    时间: 2020-7-31 12:04
uchar d1 = P1&0xe3;         你好好想想你这样写有什么不对,难不成你自创的
作者: szb314    时间: 2020-7-31 12:07
uchar d1 = P1&0xe3;  注释掉编译试试
作者: 1692483014    时间: 2020-7-31 12:13
uchar类型的a怎么能和uint型的t去比较呢?把delay里的uchar改为uint。
作者: hsl32    时间: 2020-7-31 12:52
怎么定义了两个a
作者: 草草111111    时间: 2020-7-31 13:45
数组里面最后一个数的后面不要逗号
作者: 蓝魄    时间: 2020-7-31 14:11
先定义d1再赋值试试
作者: npn    时间: 2020-7-31 14:14
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. void delay(uint);
  5. uchar d1;
  6. uchar code a[]={0xff, 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
  7. void main()
  8. {
  9. d1 = P1&0xe3;


  10. }
  11. void delay(uint t)
  12. {        
  13.         uchar a,s;
  14.         for(a=0;a<t;a++)
  15.         for(s=0;s<250;s++);
  16. }
复制代码

作者: 18862511786    时间: 2020-7-31 14:47
hsl32 发表于 2020-7-31 12:52
怎么定义了两个a

一个是数组,一个是变量,应该不影响
作者: 18862511786    时间: 2020-7-31 14:47
npn 发表于 2020-7-31 14:14

谢谢大哥
作者: xianfajushi    时间: 2020-7-31 15:02
从提示的行数往前去找,用注释掉的方法逐步就能排除并找到错误的原因,无需求人。
作者: tyrl800    时间: 2020-7-31 22:28

uchar d1 = P1&0xe3; 定义变量时不能进行读操作
作者: wufeng391    时间: 2020-8-1 07:38
原来如此,还真没有这样做过,所以也没有出现过这样的情况。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1