故障包括外部声明的枚举-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)