C: pointer to struct in the struct definition

You are missing the struct before the A*

  typedef struct A {
    int a;
    int b;
    struct A* next;
  } A;

You can define the typedef and forward declare the struct first in one statement, and then define the struct in a subsequent definition.

typedef struct A A;

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

Edit: As others have mentioned, without the forward declaration the struct name is still valid inside the struct definition (i.e. you can used struct A), but the typedef is not available until after the typedef definition is complete (so using just A wouldn't be valid). This may not matter too much with just one pointer member, but if you have a complex data structure with lots of self-type pointers, may be less wieldy.


In addition to the first answer, without a typedef and forward declaration, this should be fine too.

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

Tags:

C

Pointers

Struct