EDIT: although, it seems like this looses much of its power once you start passing these buffers around to functions that do not use these macros.
Alas it's even worse: once you pass buffers around to functions, you can't use these macros!