|
|
@@ -19,6 +19,14 @@ enum {
|
|
|
#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)
|
|
|
#endif
|
|
|
|
|
|
+/**
|
|
|
+ * sizeof_field(TYPE, MEMBER)
|
|
|
+ *
|
|
|
+ * @TYPE: The structure containing the field of interest
|
|
|
+ * @MEMBER: The field to return the size of
|
|
|
+ */
|
|
|
+#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
|
|
|
+
|
|
|
/**
|
|
|
* offsetofend(TYPE, MEMBER)
|
|
|
*
|
|
|
@@ -26,6 +34,6 @@ enum {
|
|
|
* @MEMBER: The member within the structure to get the end offset of
|
|
|
*/
|
|
|
#define offsetofend(TYPE, MEMBER) \
|
|
|
- (offsetof(TYPE, MEMBER) + sizeof(((TYPE *)0)->MEMBER))
|
|
|
+ (offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER))
|
|
|
|
|
|
#endif
|