以下是数据结构的一些代码:
struct node {
char* command;
char** prereq;
prereq = malloc(100*sizeof(char*));
for (int i = 0; i<100; i++)
{
prereq[i]=malloc(80);
}
Node *next;
char *targ;
int isUpdated;
};
但是,当我尝试在其中运行具有此结构的程序时,我收到此错误:
error: expected specifier-qualifier-list before ‘prereq’
在阅读了这个错误后,当有人试图创建一个链表而不在结构中声明'struct'时,它看起来最常见。但是,我对它如何适用于我的结构感到困惑。
如果有帮助,我在标题中有这个:
typedef struct node Node;
答案 0 :(得分:0)
你不能在结构定义中写一个for
循环!或者是任务,来吧。即使C ++也不会接受它的写作。
typedef struct node Node;
struct node
{
char *command;
char **prereq;
Node *next;
char *targ;
int isUpdated;
};
那应该没问题(虽然它是我的代码,我使用typedef struct Node Node;
和struct Node { ... };
- 结构标签与typedef名称在一个单独的命名空间中,所以没有问题。)
然后,您可以将初始化代码放在单独的函数initnode()
或类似的函数中:
int initnode(Node *node)
{
node->command = 0;
node->next = 0;
node->targ = 0;
node->isUpdated = 0;
if ((node->prereq = malloc(100*sizeof(char*))) == 0)
return -1;
for (int i = 0; i < 100; i++)
{
if ((node->prereq[i] = malloc(80)) == 0)
{
for (int j = 0; j < i; j++)
free(node->prereq[j]);
free(node->prereq);
node->prereq = 0;
return -1;
}
}
return 0;
}