diff --git a/src/common/util.h b/src/common/util.h
index c59c79c30ef4795767f43f9865e70ab9fbb6ab19..032842d8dc4738f37a934da4b0e5cac9b0288949 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -43,18 +43,6 @@
 #include "lib/encoding/cstring.h"
 #include "lib/fs/winlib.h"
 
-/** Macro: yield a pointer to an enclosing structure given a pointer to
- * a substructure at offset <b>off</b>. Example:
- * <pre>
- *   struct base { ... };
- *   struct subtype { int x; struct base b; } x;
- *   struct base *bp = &x.base;
- *   struct *sp = SUBTYPE_P(bp, struct subtype, b);
- * </pre>
- */
-#define SUBTYPE_P(p, subtype, basemember) \
-  ((void*) ( ((char*)(p)) - offsetof(subtype, basemember) ))
-
 /* Math functions */
 
 /* String manipulation */
diff --git a/src/lib/cc/compat_compiler.h b/src/lib/cc/compat_compiler.h
index 67d945cfaf6c9ccb5382a36e170093da26bf9520..c631a7e821746210067fb0d0bc9a27a7c228b911 100644
--- a/src/lib/cc/compat_compiler.h
+++ b/src/lib/cc/compat_compiler.h
@@ -253,6 +253,18 @@
  */
 #define STRUCT_VAR_P(st, off) ((void*) ( ((char*)(st)) + (off) ) )
 
+/** Macro: yield a pointer to an enclosing structure given a pointer to
+ * a substructure at offset <b>off</b>. Example:
+ * <pre>
+ *   struct base { ... };
+ *   struct subtype { int x; struct base b; } x;
+ *   struct base *bp = &x.base;
+ *   struct *sp = SUBTYPE_P(bp, struct subtype, b);
+ * </pre>
+ */
+#define SUBTYPE_P(p, subtype, basemember) \
+  ((void*) ( ((char*)(p)) - offsetof(subtype, basemember) ))
+
 /** Macro: Yields the number of elements in array x. */
 #define ARRAY_LENGTH(x) ((sizeof(x)) / sizeof(x[0]))