News for hackers. Stuff that matters.
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?
Re:ISO C is increasingly moronic by tptacek on Tuesday December 20, 2011 @11:25PM (#3376348)
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.

Re:ISO C is increasingly moronic by tkahn6 on Wednesday December 21, 2011 @06:27AM (#3377166)
Thanks! Helpful as always.
Re:ISO C is increasingly moronic by saurik on Tuesday December 20, 2011 @07:47PM (#3375890)
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.
Re:ISO C is increasingly moronic by jedbrown on Tuesday December 20, 2011 @07:46PM (#3375889)
It's intended to be used with lists with different payloads, all "inheriting" fields from a standard list structure (usually another macro expansion).