gpt4 book ai didi

c - 包括外部声明的枚举在内的问题 - C 代码

转载 作者:行者123 更新时间:2023-11-30 19:29:01 25 4
gpt4 key购买 nike

更新:问题已解决。这是可以正确编译的代码。

---instruction.h---
#ifndef INSTRUCTION_H
#define INSTRUCTION_H

typedef enum OPCODE {ADD = 0x20,ADDI = 0x8,SUB = 0x22,MULT = 0x18,BEQ = 0x4,LW = 0x23,SW = 0x2B} opcode;
/*opcode is OPCODEs alias*/
typedef struct INSTRUCTION {
opcode op;
int rs;
int rt;
int rd;
int Imm;
} inst;
/*inst is INSTRUCTIONs alias*/
#endif // INSTRUCTION_H

---parser.c---
#include <stdio.h>
#include "instruction.h"
void parser(char *instruction)
{
/*Parse character string into instruction components*/
inst set1 = {LW,0,1,2,0};
printf("parsing");
};

int main()
{
char *instruction;
instruction = NULL;
parser(instruction);
};
/*pass in pointer for instruction being passed in*/
/*pointing to address of instruction being passed in*/
/*Parser return type is struct inst*/

我似乎无法在我的主 c 文件中识别我的枚举类型“opcode”。我包含了头文件。我对 C 相当陌生,所以有一段时间没有在这个问题上取得太多进展,想看看是否有人知道为什么我收到下面的错误消息。我的猜测是链接头文件无法正常工作。任何帮助深表感谢。 enter image description here

---instruction.h----

#ifndef INSTRUCTION_H
#define INSTRUCTION_H

typedef enum {add = 32,addi = 8,sub = 34,mult = 24,beq = 4,lw = 35,sw = 43}opcode;
extern opcode oper;
typedef struct {
opcode op;
int rs;
int rt;
int rd;
int Imm;
}inst;
#endif // INSTRUCTION_H

---Parser.c---

#include <stdio.h>
#include "instruction.h"
void parser(char *inst)
{
/*Parse character string into instruction components*/
struct inst{lw,0,1,2,0};

};

int main()
{
char *instruction;
instruction = NULL;
parser(instruction);
};

最佳答案

struct inst{lw,0,1,2,0};

这看起来应该是一个变量声明,但我没有看到该变量的名称。尝试:

struct inst name_of_the_variable = {lw,0,1,2,0};

顺便说一句,enum 值是全局常量,因此给它们起像 lw 这样的名称可能不是一个好主意,因为它们可能会与变量混淆。标准做法是使用全大写名称并给它们一个前缀......例如,OPCODE_ADDOPCODE_LW等。

关于c - 包括外部声明的枚举在内的问题 - C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com