jwd 发表于 2024-3-15 12:54:32

keil c251位变量编译时出错

我的工程在keil c51上编译是通过的,在c251上就报错


char ebdata inx1;//
char ebdata inx2;//
char ebdata inx3;//

//输入口定义
sbit x170 = inx1 ^ 0;
sbit x10 = inx1 ^ 0;
sbit x11 = inx1 ^ 1;
sbit x12 = inx1 ^ 2;
sbit x13 = inx1 ^ 3;
sbit x14 = inx1 ^ 4;
sbit x15 = inx1 ^ 5;
sbit x16 = inx1 ^ 6;
sbit x17 = inx1 ^ 7;

头文件

extern bit x170;
extern bit x10;
extern bit x11;
extern bit x12;
extern bit x13;
extern bit x14;
extern bit x15;
extern bit x16;
extern bit x17;



编译错误

*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:x13
    MODULE:mainptslj.obj (mainptslj)
    ADDRESS: FF0A9AH

请问,需要怎么改下才能好?

21cnsound 发表于 2024-3-15 13:58:07

头文件和代码中重复定义了x13,去掉自己代码中x10-x17定义

jwd 发表于 2024-3-15 14:25:04

21cnsound 发表于 2024-3-15 13:58
头文件和代码中重复定义了x13,去掉自己代码中x10-x17定义

头文件我使用了extern定义啊,在keil c51这样编译是可以的

jwd 发表于 2024-3-15 23:04:32

我大概找到原因了,定义变量时也是需要定义为bdata才行,不能使用ebdata,这与说明书有点不一样;
定义为ebdata时在模块内部使用没有问题,但是有外部调用的话就编译报错
页: [1]
查看完整版本: keil c251位变量编译时出错