Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何修复';请求加入非结构或联盟的成员';错误_C_Arrays_Assembly - Fatal编程技术网

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);