2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-29 15:28:56 +00:00

util: Make PADDED_MEMBERS work more than once per struct.

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 <blp@ovn.org>
Acked-by: Bhanuprakash Bodireddy <Bhanuprakash.bodireddy@intel.com>
This commit is contained in:
Ben Pfaff
2017-07-10 21:55:56 -07:00
parent 8a8c1b93b1
commit 4fe660719d

View File

@@ -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