Re:ISO C is increasingly moronic
by tkahn6 on Tuesday December 20, 2011 @06:53PM
(#3375746)
Can anyone explain why this needs to be a macro? What does this get you over a plain function?
[ Parent
| on HN ]
The idiomatic way you'd express a generic tailq in C with functions is with void-stars, which cost 4-8 bytes and incur the costs of indirecting through another memory address and, probably, of allocating lots of fiddly little structs at random times.
The macro version expresses the same generalized logic but embeds the link pointers in the structure you're queueing.
Thanks! Helpful as always.
The "field" argument cannot be passed as an argument to a normal function in C. FWIW, you could pass it as an argument in C++ (which supports pointers to members), but in C++ there are numerous better ways of implementing this.