MDK 调试模式下为什么看不到结构体变量和数组变量里的值?

哪位大神能帮我解决一下,在locals和Watch1窗口里能看到整形变量的值,但是结构体变量里都是0,怎么办?

您好,这样的:
位结构是C51语言中的一种特殊结构,可以用于访问一个字节或字的多个位。位结构一般形式如下。
struct 位结构名
{
数据类型 变量名: 整形常数;
数据类型 变量名: 整形常数;
}位结构变量;
其中,struct为关键字,位结构数据类型必须是整型int(unsigned或signed);整形常熟必须是非负的整数,范围是0~15,用于表示有多少位,即表示二进制位的个数,变量名是可选项,可以省略。位结构的定义,实例如下。

struct
{
unsigned LBit : 8; //LBit 占用低字节0~7共八位。
unsigned HBit0 : 4; //HBit0 占用高字节0~3共4位。
unsigned HBit1 : 3; //HBit1 占用高字节4~6共3位。
unsigned HBit2 : 1; //HBit2 占用高字节第7位。
}Bit;
位结构成员的访问与结构成员的访问相同,例如访问上列位结构中的LBit成员可写成如下形式
Bit.LBit
在使用位结构时,应注意以下几点。
1、位结构中的成员必须是int,但可以定义为unsigned或者signed。
2、当位结构成员长度为1时,C51语言将其认为是unsigned类型。
3、位结构总长度(位数)是各个位成员定义的位数之和,可以超过两个字节。
4、位结构中的成员不能使用数组和指针,但位结构变量可以是数组和指针。如果是指针,其成员访问方式同结构指针。
5、位结构可以成为嵌套式结构的成员,与其他结构成员一起使用,示例如下。
struct student
{
char *name;
int num;
int age;
char *sex;
float score;
unsigned reister:1;
unsigned pay:1;
};
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答