stddef: Introduce DECLARE_FLEX_ARRAY() helper
[carl9170fw.git] / include / linux / compiler.h
index e40d8aec3c45f5ab284e03156bdcab93f31e97b5..cd97693822d7d8f0df3f0aa6f9d03b47ae747bce 100644 (file)
@@ -111,4 +111,20 @@ static inline unsigned int hweight8(unsigned int w)
         return (res + (res >> 4)) & 0x0F;
 }
 
+/**
+ * DECLARE_FLEX_ARRAY() - Declare a flexible array usable in a union
+ *
+ * @TYPE: The type of each flexible array element
+ * @NAME: The name of the flexible array member
+ *
+ * In order to have a flexible array member in a union or alone in a
+ * struct, it needs to be wrapped in an anonymous struct with at least 1
+ * named member, but that member can be empty.
+ */
+#define DECLARE_FLEX_ARRAY(TYPE, NAME) \
+       struct { \
+               struct { } __empty_ ## NAME; \
+               TYPE NAME[]; \
+       }
+
 #endif /* __SHARED_COMPILER_H */