c – Why am I getting this error: data definition has no type or storage class?

c – Why am I getting this error: data definition has no type or storage class?

It looks like the line

head = (Node*) malloc( sizeof( Node ) ); //line 21

is outside the main() function. You cant do that, because you cant execute code outside functions. The only thing you can do at global scope is declaring variables. Just move it inside the main() or any other function, and the problem should go away.

(PS: Take a look at this question on why you shouldnt type-cast malloc)

Try putting the malloc and variable declarations in a main function, and delete the cast on malloc. It should look like this:

#include <stdio.h>
#include <stdlib.h>

int main(){

    struct NODE
    {
        char* name;
        int val;
        struct NODE* next;
    };

    typedef struct NODE Node;

    Node *head, *tail;
    head = malloc( sizeof(Node) ); //line 21
}

c – Why am I getting this error: data definition has no type or storage class?

The problem is that youre trying to call malloc when you arent executing inside of a function. If you wrap that inside a main function, for example:

int main(int argc, char **argv)
{
    Node *head, *tail;
    head = (Node*) malloc( sizeof( Node ) );
    /* ... do other things ... */
    return 0;
}

… it works just fine. GCCs error is a little cryptic, but the problem is basically that youre trying to initialize a variable with something that isnt a constant, which is impossible outside of a function.

Leave a Reply

Your email address will not be published.