4 ms·
That's not possible - the compiler needs to know the size so that it can allocate space for the structure. You can get away with forward declarations of things
by rkangel 9y ago
That's not possible - the compiler needs to know the size so that it can allocate space for the structure.
You can get away with forward declarations of things if you only ever need a pointer to the struct, because the compiler knows how big a pointer is and only needs to know the size of the structure when you dereference it.
You also need to know the size when you allocate it - whether you're using malloc, or allocating statically. As you want to leave control of allocation up to the caller, then the caller needs to know the size.
Theoretically I suppose you could allocate through a macro that used an explicit size number in the header, but going to those lengths to take the struct out of the header seems a bit extreme.