On Tue, May 27, 2014 at 7:44 PM, Joe Perches <j...@perches.com> wrote: > On Tue, 2014-05-27 at 17:22 -0700, Cody P Schafer wrote: >> Rather manually specifying the size of the integer to be converted, key >> off of the type size. Reduces duplicate size info and the occurance of >> certain types of bugs (using the wrong sized conversion). > [] >> diff --git a/include/linux/byteorder.h b/include/linux/byteorder.h > [] >> @@ -0,0 +1,34 @@ >> +#ifndef LINUX_BYTEORDER_H_ >> +#define LINUX_BYTEORDER_H_ >> + >> +#include <asm/byteorder.h> >> + >> +#define be_to_cpu(v) \ >> + __builtin_choose_expr(sizeof(v) == sizeof(uint8_t) , v, \ >> + __builtin_choose_expr(sizeof(v) == sizeof(uint16_t), be16_to_cpu(v), \ >> + __builtin_choose_expr(sizeof(v) == sizeof(uint32_t), be32_to_cpu(v), \ >> + __builtin_choose_expr(sizeof(v) == sizeof(uint64_t), be64_to_cpu(v), \ >> + (void)0)))) > > probably better to use BUILD_BUG instead of these 0 returns >
They aren't 0 returns. $ echo "int main(void) { int x = (void)0; return x; }" | gcc -x c - <stdin>: In function ‘main’: <stdin>:1:26: error: void value not ignored as it ought to be _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev