According to the C spec, every use of the ## operator has to produce a
valid preprocessing token, otherwise the behaviour is undefined. It is
not enough to merely ensure that a sequence of ## operators results in
a valid token at the end.
This matters in practice, as at least some versions of the Sun Studio
compiler will turn:
#define PASTE(a, b) a ## b
#define PASTE2(a, b) PASTE(a, b)
PASTE2(uint_least, PASTE(8, _t))
into two tokens:
uint_least8 _t
instead of uint_least8_t as desired. The results are not good for
the XTRA_PACKED_LOPTS macro. Fortunately, it is straightforward to
rearrange the expansions to avoid this problem.