Linus Torvalds writes: (Summary) \
___constant_swab64(x) : \
__fswab64(x))
__fswab64(x))
where that "___constant_swab64()" very much uses the same argument over and over.
over and over.
And we do that for related reasons - we really want to do the constant folding at build time for some cases, and this was the only sane way to do it. But since the kernel is standalone, we don't need to really worry about the *generic* case, we just need to worry about our own macros, and if somebody does that example you show I guess we'll just have to shun them ;) Of course, our own macros are often macros from hell, exactly because they often contain a lot of type-checking and/or type-(size)-based polymorphism. concern for macro writers: write a macro that works in any arbitrary >>
___constant_swab64(x) : \
__fswab64(x))
__fswab64(x))
where that "___constant_swab64()" very much uses the same argument over and over.
over and over.
And we do that for related reasons - we really want to do the constant folding at build time for some cases, and this was the only sane way to do it. But since the kernel is standalone, we don't need to really worry about the *generic* case, we just need to worry about our own macros, and if somebody does that example you show I guess we'll just have to shun them ;) Of course, our own macros are often macros from hell, exactly because they often contain a lot of type-checking and/or type-(size)-based polymorphism. concern for macro writers: write a macro that works in any arbitrary >>