X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fcast%2Fcast.h;h=b108b0c864d3b0cd07e26a497040537921d674b4;hb=407057edd6b45cae437d119df80ff080989a2752;hp=dfb95b59772611bf53582b4b4ef132970104a829;hpb=1313203b72656e8480805c7688c187d274fdceeb;p=ccan diff --git a/ccan/cast/cast.h b/ccan/cast/cast.h index dfb95b59..b108b0c8 100644 --- a/ccan/cast/cast.h +++ b/ccan/cast/cast.h @@ -1,3 +1,4 @@ +/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #ifndef CCAN_CAST_H #define CCAN_CAST_H #include "config.h" @@ -105,11 +106,11 @@ ) #define cast_const_strip1(expr) \ - __typeof__(*(struct { int z; __typeof__(expr) x; }){0}.x) + __typeof__(*(union { int z; __typeof__(expr) x; }){0}.x) #define cast_const_strip2(expr) \ - __typeof__(**(struct { int z; __typeof__(expr) x; }){0}.x) + __typeof__(**(union { int z; __typeof__(expr) x; }){0}.x) #define cast_const_strip3(expr) \ - __typeof__(***(struct { int z; __typeof__(expr) x; }){0}.x) + __typeof__(***(union { int z; __typeof__(expr) x; }){0}.x) #define cast_const_compat1(expr, type) \ __builtin_types_compatible_p(cast_const_strip1(expr), \ cast_const_strip1(type)) @@ -122,11 +123,8 @@ #else #define cast_sign_compatible(type, expr) \ (sizeof(*(type)0) == 1 && sizeof(*(expr)) == 1) -#define cast_const_compat1(expr, type) \ - (sizeof(*(expr)) == sizeof(*(type)0)) -#define cast_const_compat2(expr, type) \ - (sizeof(**(expr)) == sizeof(**(type)0)) -#define cast_const_compat3(expr, type) \ - (sizeof(***(expr)) == sizeof(***(type)0)) +#define cast_const_compat1(expr, type) (1) +#define cast_const_compat2(expr, type) (1) +#define cast_const_compat3(expr, type) (1) #endif #endif /* CCAN_CAST_H */