我使用链接列表来存储有关客户的数据:
typedef struct{
char* name;
unsigned long number;
char package;
}Client;
struct node {
Client value;
struct node *next;
};
typedef struct node *LinkedListNode;
当我在main函数中声明列表的头部时,编译器现在会抱怨混合声明和代码:
int main(){
LinkedListNode head;
head = (LinkedListNode) malloc(sizeof(struct node));
Client aux,aux2;
char command;
command= getchar();
while(command!='x'){
switch(command){
(...)
我可以看到问题是什么,因为我在添加“malloc”调用后才出现此错误。我只是不知道如何修复它
结构在* .h文件中定义,以防万一。
答案 0 :(得分:4)
要修复它,您必须将所有变量声明移动到它们出现的块的顶部。变量的声明必须全部出现在第一个非声明代码之前。
例如:
int main(void)
{
LinkedListNode head;
Client aux,aux2;
char command;
head = (LinkedListNode) malloc(sizeof(struct node));
command= getchar();
while(command!='x'){
switch(command){
(...)
}
作为替代方案,您可以在函数内部使用大括号引入一个新块,并在该块的顶部声明您的变量。但是,这可能会导致相当人为和混乱的代码。
此特定规则在C99中已更改。您的代码在C99下有效。