希望你做得好。我目前正在尝试开发流程创建程序,并希望获得一些见解。我希望创建一个进程指针数组,并使用一个进程来操纵另一个进程的值。我简化了此示例的 Process 结构。在本例中,arrayP[1] 是 arrayP[0] 的子级,我希望使用 arrayP[1] 的指针将 arrayP[0] 的子级数的值更改为 1。
include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define MIN_PID 300
#define MAX_PID 5000
typedef struct{
int numChildren;
struct Process* parent;
} Process;
int main(void)
{ Process *arrayP;
arrayP=malloc(sizeof(Process)*2);
arrayP[1].parent=&arrayP[0];
arrayP[1].parent->numChildren = 1;
free(arrayP);
return 0;
}
运行此命令时,我收到错误:“‘struct Process’类型的定义不完整 p2.parent->numChildren = 1;" 我做错了什么还是这是不可能的?
在编译器获得 Process 结构的完整定义之前,您正尝试通过指向 arrayP[0] 的指针访问 arrayP[0] 的 numChildren 成员。结构体 Process 在声明 arrayP 变量之后定义。您可以通过将结构定义移至代码中其用法之上来解决此问题。
只需将 Process 结构定义更新为
typedef struct Process {
int numChildren;
struct Process* parent;
} Process;