So, I know I asked it, but I figured it out and thought that answering it might help others.
Just like making recursive functions, structures must also be prototyped.
So, consider making recursive functions:
int fnc_a();
int fnc_b();
int fnc_a()
{
fnc_b();
}
int fnc_b()
{
fnc_a();
}
The first two lines identify as the prototypes for the functions so that they can be used before their actual definition/declaration is provided.
Now consider making two recursive structs again:
struct A;
struct B;
struct A {
B* pBstruct;
};
struct B {
A* pAstruct;
};
These first two lines declare the existence of the two structs so that they can be used before they are declared. (Don't bother commenting on the fact I only need the B struct prototype - I do recognize that)
One final note, don't forget to use struct 'pointer' variables and not struct variables. This will not compile because it would create an infinitely large structure:
struct A;
struct B;
struct A {
B pBstruct;
};
struct B {
A pAstruct;
};