Until now, if the PADDED_MEMBERS macro was used more than once in a struct, it caused Clang and GCC warnings because of multiple definition of a member named "pad". This commit fixes the problem by giving each of these a unique name.
MSVC, Clang, and GCC all support the __COUNTER__ macro, although it is not standardized. Signed-off-by: Ben Pfaff <[email protected]> --- include/openvswitch/util.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/openvswitch/util.h b/include/openvswitch/util.h index 8453550cd845..17b06528f1a0 100644 --- a/include/openvswitch/util.h +++ b/include/openvswitch/util.h @@ -172,10 +172,13 @@ OVS_NO_RETURN void ovs_assert_failure(const char *, const char *, const char *); * PADDED_MEMBERS(8, uint8_t x; uint8_t y;); * }; */ +#define PAD_PASTE2(x, y) x##y +#define PAD_PASTE(x, y) PAD_PASTE2(x, y) +#define PAD_ID PAD_PASTE(pad, __COUNTER__) #define PADDED_MEMBERS(UNIT, MEMBERS) \ union { \ struct { MEMBERS }; \ - uint8_t pad[ROUND_UP(sizeof(struct { MEMBERS }), UNIT)]; \ + uint8_t PAD_ID[ROUND_UP(sizeof(struct { MEMBERS }), UNIT)]; \ } static inline bool -- 2.10.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
