I am writing a LinkedList in C, the below code represent my Node definition.
typedef struct {
int value;
struct Node* next;
struct Node* prev;
} Node;
I understand (or think that I do) that struct Node not the same as typedef struct Node. Granted my code compiles and runs as it’s supposed to, however, I get a lot of warnings when assigning next and prev (warning: assignment from incompatible pointer type). I am guessing that this has to do with how I’m defining them in the Node structure.
I uploaded the full source here
So, if that is indeed the problem, how should I define next and prev inside the typedef struct Node?
I was worried this may be a repost, but couldn’t quite find what I was looking for. Thanks.
You need to do it in this order:
That doesn’t do exactly what you asked, but it solves the problem and is how this generally is done. I don’t think there’s a better way.
This kind of forward declaration has a second usage, in data hiding. If the list was implemented in a library, you could have just the
typedefin the public header, along with functions like:This way, users of the library don’t have easy access to the internals of your library, i.e. the fields of the
Nodestructure.