Good work! Unfortunately I cannot compile the bignum.h macros with Clang since the expansion order seems different (looks like type2 is not expanded):
In file included from /Users/jonasw/hacks/Pike/git/pike79/src/modules/Gmp/mpz_glue.c:37: /Users/jonasw/hacks/Pike/git/pike79/src/bignum.h:179:1: error: expected ';' at end of declaration GEN_OF2(64, 128) ^ /Users/jonasw/hacks/Pike/git/pike79/src/bignum.h:175:25: note: expanded from macro 'GEN_OF2' #define GEN_OF2(s1, s2) _GEN_OF2(INT ## s1, INT ## s2, s1)\ ^ /Users/jonasw/hacks/Pike/git/pike79/src/bignum.h:49:20: note: expanded from macro '_GEN_OF2' unsigned type2 res; \ ^