1

I want to use some basic struct in C like the following:

struct p {
    int a;
    int b;
    p * next;
}

However, it fails to compile with an error: parse error before "p" on the line with p * next;.

Do you have any idea what the reason could be for this problem?

1 Answer 1

9

C structs live in a different namespace and have to be explicitly scoped, thus:

struct p {
    int a;
    int b;
    struct p * next;
};

And don't forget the semicolon at the end! :-)

You can pretend you're in C++ thus: typedef struct p { /*...*/ } p;. But I think that next will still have be declared as above.

Sign up to request clarification or add additional context in comments.

1 Comment

You are right that struct p* next; is still needed with typedef, because the typedef'd name p isn't yet in scope.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.