一个c51编译问题我发现一个问题,不知道是我不对,还是c51的bug问题。见下图,其中d的声明是:
char bdata d;
sbit d7=d^7;
我要求返回的是d的值,可是不管是实际,还是从编译函数中看,返回的d值中的第7位(就是d7=1:)丢掉了。本来返回的是1;现在却返回的是0。c51为什么会这么编译呢?具体问题出在倒数第二行返回值处:MOV R7,A 这个A是在SETB d7之前的,不包含已经变化了的d7=1这一内容啊。
该怎么解决,凡是用到位变量的,c51都不能够返回正确值。
此主题相关图片如下:
