编译器抱怨“opcode_table未声明(首次使用此功能)",为什么?

时间:2015-10-23 19:06:10

标签: c

我有这个功能:

void run(int PC)
{
    int A = 0, op = 0, arg = 0, i = 0;
    char *xpress = NULL, *acode = NULL, strarg[CL_ARG_SIZE];
    while (1)
      {
        printf("PC: %03x | A: %03i |", PC, A);
        op = data[PC]; arg = data[PC+1];
        PC += 2;
        for (i=0 ; i<21 ; ++i)
             if (op == opcode_table[i].op)
             {
                 acode = opcode_table[i].mnemo;
                 sprintf(strarg, "0x%x", arg);   
                 xpress = replace(opcode_table[i].instruct, "_", strarg);
                 break;
              }
         printf(" %s %x\t| %s \t", acode, arg, xpress);
         step();
         exec_instruct(op, arg, &A, &PC);
    }
}

当我尝试编译程序时,我收到以下错误:

  

:103:35:错误:'opcode_table'未声明(首次使用此功能)   :103:35:注意:每个未声明的标识符仅针对它出现在

中的每个函数报告一次

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的函数中有三行代码,您可以使用数组变量opcode_table而不首先声明它。从:

开始
if (op == opcode_table[i].op)