1

这是我的头文件:

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,我不知道为什么。

4

2 回答 2

3

因为您定义Argsint *[],所以该成员args被有效地声明为

int *args[];

这是一个灵活的数组成员,它们只允许在结构的末尾。

如果您的意思是暗示这Args是一个指针(与 相同char **argv),请将其声明为指针:

typedef int **Args;
于 2013-04-12T15:36:47.243 回答
0

而不是使用

typedef int* Args[];

并在您的结构声明中

Args args;

最好只使用第一种类型进行结构声明...

Arg args[];

老实说,我什至不确定第一个是合法的 typedef,但只是我以前从未用 typedef 做过类似的事情。我的直觉告诉我这是不合法的,因此Args是未定义的,因此您会遇到错误。如果我对此应用左右规则,那么Args它是一个指向 int 的指针数组的类型......所以,也许它是合法的,但它在我看来确实很有趣。

于 2013-04-12T15:39:16.037 回答