stu*_*t96 2 c arrays shell struct pointers
我正在自己写一个shell,我总是收到这个警告"从不兼容的pointertype分配"以获取以下代码(只是重要的部分)
if (first_struct == NULL)
{
first_struct = &parg;
}
else
{
Pargs** temp = first_struct;
while ((*temp)->next != NULL)
temp = &((*temp)->next);<--incompatible pointer type
(*temp)->next = parg;<--incompatible pointer type
}
parg->next = NULL;
Run Code Online (Sandbox Code Playgroud)
对我来说,只有相同的指针类型.
这是结构的代码:
typedef struct
{
struct Pargs* next;
char* command;
char* args[11];
} Pargs;
Run Code Online (Sandbox Code Playgroud)
该结构被声明为以上几行:
Pargs* parg = malloc(sizeof (Pargs));
Run Code Online (Sandbox Code Playgroud)
也许我没有看到自己的失败,但我从几个小时开始看这条线,我不知道为什么这不应该是正确的.
PS:如果有人需要更多代码或信息,请不要犹豫,我还有更多代码或信息;)
typedef struct
{
struct Pargs* next;
char* command;
char* args[11];
} Pargs;
Run Code Online (Sandbox Code Playgroud)
你Pargs在struct本身里面引用了typedef .这将不起作用,因为它是一个指向不完整类型的指针,你不能引用它,直到你给出完整的定义.
你可以这样做 -
typedef struct name // give any desired name to structure
{
struct name *next; //use struct's name to declare pointer next
char* command;
char* args[11];
} Pargs;
Run Code Online (Sandbox Code Playgroud)