]> git.proxmox.com Git - mirror_ovs.git/commitdiff
util: Make PADDED_MEMBERS work more than once per struct.
authorBen Pfaff <blp@ovn.org>
Tue, 11 Jul 2017 04:55:56 +0000 (21:55 -0700)
committerBen Pfaff <blp@ovn.org>
Thu, 13 Jul 2017 17:24:06 +0000 (10:24 -0700)
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>
include/openvswitch/util.h

index 8453550cd8453c8cc103a89811a135abc00b2f6b..17b06528f1a018d7e36d91ee5a58d18a5f684b98 100644 (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