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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user