这是我的头文件:
typedef int* Arg;
typedef int* Args[];
typedef int** ArgsList[];
typedef int (*ProcessStart)(Args);
typedef struct PCBEntry{
ProcessStart proc;
Args args;
int pid;
int curr_proc;
int sched_info;
int pc;
} PCBEntry;
我在结构中的Args args
行上收到错误,我不明白为什么。
答案 0 :(得分:3)
由于您将Args
定义为int *[]
,因此成员args
实际上被声明为
int *args[];
这是一个灵活的数组成员,它们只允许在结构的末尾。
如果您打算暗示Args
是一个指针(与char **argv
一样),请将其声明为指针:
typedef int **Args;
答案 1 :(得分:0)
而不是使用
typedef int* Args[];
并在您的结构声明中
Args args;
您最好只使用第一种类型进行结构声明......
Arg args[];
说实话,我甚至不确定第一个是合法的typedef,但是我以前从未做过类似于typedef的事情。我的直觉告诉我,这不合法,因此Args
未定义,因此你得到的错误。如果我将左右规则应用于那个,那么Args
是一个指向int的指针数组的类型......所以,也许它是合法的,但它确实对我来说很有趣。