* Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved.
It's very much based on this:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/queue.h?anno...
Not very modern, in other words.
Whether that is normal or not, it's up to developer. It's possible to use as small subset of C++ as developer wants. E.g. use only templates. But staying in C realm might be better for portability.
When I read this, I couldn't help but think of "macroses" as pronounced like "neuroses", which seems appropriate.
They first appear for kernel usage where the fact that they expanded to inline code in functions avoided creating too many stack-frames and provided optimization.
They do have the advantage of not relying on casting everything to "void *" or resort to callbacks for walking (see: TAILQ_FOREACH for instance).