1 #include<stdio.h>
2 #include<malloc.h>
3
4 typedef struct node_t{
5 int i;
6 struct node_t* link;
7 }node;
8
9 node* head = (node *)malloc(sizeof(node));
10
11 if(head == NULL){
12 printf("\n malloc for head node failed! \n");
13 }
14
15 int main(){
16 int i = 10;
17 node* temp = NULL;
18 temp = (node *)malloc(sizeof(node));
19 if(temp == NULL){
20 printf("\n malloc for temp node failed! \n");
21 }
22 else{
23 while(i<=10){
24 ;
25 }
26 }
27 return 0;
28 }
compilation error:
linked.c:9:1: error: initializer element is not constant
linked.c:11:1: error: expected identifier or ‘(’ before ‘if’
I’m trying a simple linked list programme. It’s not fully completed. I’m getting a compilation error. Couldn’t understand why this happened.
Since you’re defining
headas a global, its initializer needs to be a constant–basically, the compiler/linker should be able to allocate space for it in the executable, write the initializer into the space, and be done. There’s no provision for callingmallocas you’ve done above during initialization–you’ll need to do that inside ofmain(or something you call frommain).In this case, the code you have in
mainnever actually usesheadthough, so you may be able to skip all of the above without a problem.