Re: Constant byteorder macros.

From: Oliver Xymoron (oxymoron@waste.org)
Date: Thu Jan 20 2000 - 13:52:23 EST


On Thu, 20 Jan 2000, H. Peter Anvin wrote:

> > switch (status) {
> > case cpu_to_le16(CONSTANT_XYZ):
> >
> > ... I need to define new macros __constant_cpu_to_le16(), etc.
>
> Given that gcc has a __builtin_constant_p(x), you ought to be able to
> do:
>
> #define cpu_to_le16(x) ( __builtin_constant_p(x) ? __constant_cpu_to_le16(x) : __cpu_to_le16(x) )

This is ugly and potentially means changing tons of macros. Couldn't you
just do the appropriate byteswap on the switch variable instead? There
aren't many (any?) other places in C aside from the preprocessor and array
sizing that insist on constant expressions.

--
 "Love the dolphins," she advised him. "Write by W.A.S.T.E.." 

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jan 23 2000 - 21:00:27 EST