故障包括外部声明的枚举-C代码
更新:问题已解决。下面是正确编译的代码故障包括外部声明的枚举-C代码,c,enums,header,header-files,enumeration,C,Enums,Header,Header Files,Enumeration,更新:问题已解决。下面是正确编译的代码 ——指令.h--- #ifndef指令 #定义指令 typedef枚举操作码{ADD=0x20,ADDI=0x8,SUB=0x22,MULT=0x18,BEQ=0x4,LW=0x23,SW=0x2B}操作码; /*操作码是操作码别名*/ typedef结构指令{ 操作码op; int-rs; int-rt; 国际公路; 国际移民局; }研究所; /*inst是一个别名*/ #endif//指令 ---解析器.c--- #包括 #包括“说明h” 无效分析器
——指令.h---
#ifndef指令
#定义指令
typedef枚举操作码{ADD=0x20,ADDI=0x8,SUB=0x22,MULT=0x18,BEQ=0x4,LW=0x23,SW=0x2B}操作码;
/*操作码是操作码别名*/
typedef结构指令{
操作码op;
int-rs;
int-rt;
国际公路;
国际移民局;
}研究所;
/*inst是一个别名*/
#endif//指令
---解析器.c---
#包括
#包括“说明h”
无效分析器(char*指令)
{
/*将字符串解析为指令组件*/
inst set1={LW,0,1,2,0};
printf(“解析”);
};
int main()
{
字符*指令;
指令=空;
解析器(指令);
};
/*正在传入的指令的传入指针*/
/*指向传入的指令的地址*/
/*解析器返回类型为struct inst*/
这看起来应该是一个变量声明,但我没有看到变量的名称。尝试:
struct inst name_of_the_variable = {lw,0,1,2,0};
作为旁注,
enum
值是全局常量,因此给它们起个像lw
这样的名字可能不是一个好主意,因为它们可能会被变量混淆。标准做法是为名称使用所有大写字母,并给它们一个前缀…例如,OPCODE\u ADD
,OPCODE\u LW
,等等。这不是一个有效的变量定义:
struct inst{lw,0,1,2,0};
没有定义struct inst
,只有inst
,没有变量名,您需要=
使用初始值设定项。要创建此类型的变量并对其进行初始化,您需要:
inst myinst = {lw,0,1,2,0};
此外,您的函数还有一个名为inst
的参数,它屏蔽了类型inst
。您需要给它一个不同的名称:
void parser(char *instruction)
@科麦肯尼很高兴我能帮上忙。如果你觉得它有用的话,请随意使用。
void parser(char *instruction)