#c #structure
Вопрос:
Как сделать эту инструкцию структуры видимой для состояния процессора структуры? Например, если я сначала введу структуру состояния процессора, это не сработает, потому что некоторые другие аргументы не будут видны инструкции структуры, но если я снова изменю ее, у меня возникнет проблема.
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);
};
Комментарии:
1. для
struct instruction instructionlist[INSTRUCTIONLIST_SIZE];
успешного выполнения компилятор должен, по крайней мере , знать размер структуры, поэтому на данном этапе он должен знать ее определение.
Ответ №1:
Вы можете создавать неполные объявления структуры при условии, что они используются только для указателей. Например, будет работать следующий порядок. Обратите внимание, что я создал фиктивное определение 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;