找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 351|回复: 12
收起左侧

大哥们这个该怎么定义,怎么老是报错error C247: non-address/-constant initializer

  [复制链接]
18862511786 发表于 2020-7-31 11:29 | 显示全部楼层 |阅读模式
#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 | 显示全部楼层
回复

使用道具 举报

xianfajushi 发表于 2020-7-31 15:02 | 显示全部楼层
从提示的行数往前去找,用注释掉的方法逐步就能排除并找到错误的原因,无需求人。
回复

使用道具 举报

tyrl800 发表于 2020-7-31 22:28 | 显示全部楼层

uchar d1 = P1&0xe3; 定义变量时不能进行读操作
回复

使用道具 举报

wufeng391 发表于 2020-8-1 07:38 | 显示全部楼层
原来如此,还真没有这样做过,所以也没有出现过这样的情况。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表