首页 > 解决方案 > 数组类型具有不完整的元素类型“结构指令”

问题描述

如何使这个 struct 指令对 struct cpu state 可见?就像如果我把 cpu state struct 首先它不起作用,因为其他一些参数对于 struct 指令是不可见的,但是如果我再次把它反转我就有问题了。

struct  cpu_state
{
    int nextinstructionlinenumber;
    char filename[200];
    char RLO;

    struct instruction instructionlist[INSTRUCTIONLIST_SIZE];
    int instructionlistnumber;
    struct variable variablelist[INSTRUCTIONLIST_SIZE];
    int variablelistnumber;

};
struct cpu_state CPU; 


struct instruction{
    char name[LINE_CHAR_NUM];
    void(*function)(struct cpu_state* pstate, struct line* pline);
};

标签: cstructure

解决方案


您可以创建不完整的结构声明,前提是它们仅用于指针。例如,以下顺序将起作用。请注意,我创建了一个虚拟定义,struct variable因为它没有出现在帖子中。您可以将其替换为您喜欢的任何内容:

struct variable {
    int     dummy_val;
};

struct cpu_state;
struct line;

struct instruction{
    char name[LINE_CHAR_NUM];
    void(*function)(struct cpu_state* pstate, struct line* pline);
};

struct  cpu_state
{
    int nextinstructionlinenumber;
    char filename[200];
    char RLO;

    struct instruction instructionlist[INSTRUCTIONLIST_SIZE];
    int instructionlistnumber;
    struct variable variablelist[INSTRUCTIONLIST_SIZE];
    int variablelistnumber;

};

struct cpu_state CPU;

推荐阅读