windows fixes
diff --git a/tools/mkdoc.py b/tools/mkdoc.py
index d1b61c9..09c09cf 100644
--- a/tools/mkdoc.py
+++ b/tools/mkdoc.py
@@ -203,8 +203,9 @@
   Do not edit! These were automatically extracted by mkdoc.py
  */
 
+#define __EXPAND(x)                              x
 #define __COUNT(_1, _2, _3, _4, _5, COUNT, ...)  COUNT
-#define __VA_SIZE(...)                           __COUNT(__VA_ARGS__, 5, 4, 3, 2, 1)
+#define __VA_SIZE(...)                           __EXPAND(__COUNT(__VA_ARGS__, 5, 4, 3, 2, 1))
 #define __CAT1(a, b)                             a ## b
 #define __CAT2(a, b)                             __CAT1(a, b)
 #define __DOC1(n1)                               __doc_##n1
@@ -212,7 +213,7 @@
 #define __DOC3(n1, n2, n3)                       __doc_##n1##_##n2##_##n3
 #define __DOC4(n1, n2, n3, n4)                   __doc_##n1##_##n2##_##n3##_##n4
 #define __DOC5(n1, n2, n3, n4, n5)               __doc_##n1##_##n2##_##n3##_##n4_##n5
-#define DOC(...)                                 __CAT2(__DOC, __VA_SIZE(__VA_ARGS__))(__VA_ARGS__)
+#define DOC(...)                                 __EXPAND(__EXPAND(__CAT2(__DOC, __VA_SIZE(__VA_ARGS__)))(__VA_ARGS__))
 
 #if defined(__GNUG__)
 #pragma GCC diagnostic push