C 如何修复';请求加入非结构或联盟的成员';错误
当我试图打印出数组成员时,它给出了一个错误。实际上,我要做的是通过创建和命名数组来模拟寄存器,然后在执行传递给它的指令时打印出它的内容。这是我的代码:C 如何修复';请求加入非结构或联盟的成员';错误,c,arrays,assembly,C,Arrays,Assembly,当我试图打印出数组成员时,它给出了一个错误。实际上,我要做的是通过创建和命名数组来模拟寄存器,然后在执行传递给它的指令时打印出它的内容。这是我的代码: struct REGISTER; { char opcode[15]; char regDes[15]; char regN[15]; char operand2[15]; int operand2val; char name[5]; }; REGIST
struct REGISTER;
{
char opcode[15];
char regDes[15];
char regN[15];
char operand2[15];
int operand2val;
char name[5];
};
REGISTER registers[16];
void regOut()
{
registers[0].name, "R0";
registers[0].regDest,"0";
registers[0].val = 0X0;
registers[1].name,"R1";
registers[1].regDest,"1";
registers[1].val = 0X0;
registers[2].name, "R2";
registers[2].regDest,2;
registers[2].val = 0X0;
registers[3].name, "R3";
registers[3].regDest,3;
registers[3].val = 0X0;
registers[4].name, "R4";
registers[4].regDest,4;
registers[4].val = 0X0;
registers[5].name,"R5";
registers[5].regDest,5;
registers[5].val = 0X0;
registers[6].name,"R6";
registers[6].regDest,6;
registers[6].val = 0X0;
registers[7].name,"R7";
registers[7].regDest,7;
registers[7].val = 0X0;
registers[8].name, "R8";
registers[8].regDest,8;
registers[8].val = 0X0;
registers[9].name, "R9";
registers[9].regDest,9;
registers[9].val = 0X0;
registers[10].name, "R10";
registers[10].regDest,10;
registers[10].val = 0X0;
registers[11].name, "R11";
registers[11].regDest, 11;
registers[11].val = 0X0;
registers[12].name, "R12";
registers[12].regDest, 12;
registers[12].val = 0X0;
registers[13].name, "R13";
registers[13].regDest,13;
registers[13].val = 0X10000;
registers[14].name, "R14";
registers[14].regDest, 14;
registers[14].val = 0X0;
registers[15].name, "R15";
registers[15].regDest, 15;
registers[15].val = 0X0104;
void showRegisters(WORD inst)
{
char opcode[15];
char regDes[15];
char regN[15];
int i;
printf( R0: "\n%08X" R1: "%08X" R2: "%08X" R3: "%08X" R4: "%08X" R5: "%08X" R6: "%08X" R7: "%08X" R8: "%08X" R9: "%08X" R10: "%08X" R11: "%08X" R12: "%08X" R13: "%08X" R14: "%08X" R15: "%08X", registers[0].val, registers[1].val, registers[2].val, registers[3].val, registers[4].val, registers[5].val, registers[6].val, registers[7].val, registers[8].val, registers[9].val, registers[10].val, registers[11].val, registers[12].val, registers[13].val, registers[14].val, registers[15].val)
}
我得到这个错误:
"error: request for member 'name' in something not a structure or union
registers[0].name, "R0";"
首先,换行:
REGISTER registers[16];
致:
然后使用strcpy
写入char
结构的数组,如下所示:
strcpy(registers[0].name, "R0");
还可以将尝试访问字段val
(不存在)的行更改为类似以下内容:
registers[0].operand2val = 0X0;
最后,请为printf
使用正确的语法:
printf( R0: "%d " R1: "%d" R2: "%d" R3: "%d" R4: "%d" R5: "%d" R6: "%d" R7: "%d" R8: "%d" R9: "%d" R10: "%d" R11: "%d" R12: "%d" R13: "%d" R14: "%d" R15: "%d", registers[0].operand2val, registers[1].operand2val, registers[2].operand2val, registers[3].operand2val, registers[4].operand2val, registers[5].operand2val, registers[6].operand2val, registers[7].operand2val, registers[8].operand2val, registers[9].operand2val, registers[10].operand2val, registers[11].operand2val, registers[12].operand2val, registers[13].operand2val, registers[14].operand2val, registers[15].operand2val);
它是
寄存器[0]。名称为“R0”
和alikes??可能需要strcpy()
struct REGISTER代码>-->struct REGISTER
建议:struct REGISTER REGISTER[16]={{.name=“R0”、.regDes=“0”、.operan2val=0X0}、{.name=“R1”、.regDes=“1”、.operan2val=0X0}、…}代码>我会阅读printf。printf(R0:“\n%08X”将不起作用。printf采用格式字符串和一个或多个参数。R0:“\n…”与此不符。其showRegisters
中的printf
语句看起来也很粗略
printf( R0: "%d " R1: "%d" R2: "%d" R3: "%d" R4: "%d" R5: "%d" R6: "%d" R7: "%d" R8: "%d" R9: "%d" R10: "%d" R11: "%d" R12: "%d" R13: "%d" R14: "%d" R15: "%d", registers[0].operand2val, registers[1].operand2val, registers[2].operand2val, registers[3].operand2val, registers[4].operand2val, registers[5].operand2val, registers[6].operand2val, registers[7].operand2val, registers[8].operand2val, registers[9].operand2val, registers[10].operand2val, registers[11].operand2val, registers[12].operand2val, registers[13].operand2val, registers[14].operand2val, registers[15].operand2val);