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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.