Fix build issues regarding formatter for Win32

Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/248
diff --git a/src/fcatomic.h b/src/fcatomic.h
index 657a5f5..ba45b6c 100644
--- a/src/fcatomic.h
+++ b/src/fcatomic.h
@@ -61,6 +61,7 @@
 }
 
 typedef LONG fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"ld"
 #define fc_atomic_int_add(AI, V)	InterlockedExchangeAdd (&(AI), (V))
 
 #define fc_atomic_ptr_get(P)		(_FCMemoryBarrier (), (void *) *(P))
@@ -73,6 +74,7 @@
 #include <AvailabilityMacros.h>
 
 typedef int fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"d"
 #define fc_atomic_int_add(AI, V)	(OSAtomicAdd32Barrier ((V), &(AI)) - (V))
 
 #define fc_atomic_ptr_get(P)		(OSMemoryBarrier (), (void *) *(P))
@@ -85,6 +87,7 @@
 #elif !defined(FC_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
 
 typedef int fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"d"
 #define fc_atomic_int_add(AI, V)	__sync_fetch_and_add (&(AI), (V))
 
 #define fc_atomic_ptr_get(P)		(void *) (__sync_synchronize (), *(P))
@@ -97,6 +100,7 @@
 #include <mbarrier.h>
 
 typedef unsigned int fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"u"
 #define fc_atomic_int_add(AI, V)	( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V))
 
 #define fc_atomic_ptr_get(P)		( ({__machine_rw_barrier ();}), (void *) *(P))
@@ -107,6 +111,7 @@
 
 #define FC_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */
 typedef volatile int fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"d"
 #define fc_atomic_int_add(AI, V)	(((AI) += (V)) - (V))
 
 #define fc_atomic_ptr_get(P)		((void *) *(P))
@@ -116,6 +121,7 @@
 #else /* FC_NO_MT */
 
 typedef int fc_atomic_int_t;
+#define FC_ATOMIC_INT_FORMAT		"d"
 #define fc_atomic_int_add(AI, V)	(((AI) += (V)) - (V))
 
 #define fc_atomic_ptr_get(P)		((void *) *(P))
diff --git a/src/fccache.c b/src/fccache.c
index d10f249..df497c9 100644
--- a/src/fccache.c
+++ b/src/fccache.c
@@ -808,7 +808,7 @@
 	    if (fcCacheChains[i] != NULL)
 	    {
 		FcCacheSkip *s = fcCacheChains[i];
-		printf("Fontconfig error: not freed %p (dir: %s, refcount %d)\n", s->cache, FcCacheDir(s->cache), s->ref.count);
+		printf("Fontconfig error: not freed %p (dir: %s, refcount %" FC_ATOMIC_INT_FORMAT ")\n", s->cache, FcCacheDir(s->cache), s->ref.count);
 	    }
 	}
 	else
@@ -1157,14 +1157,14 @@
 	else if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
 		|| (errno != 0 && epoch == 0))
 	    fprintf (stderr,
-		     "Fontconfig: SOURCE_DATE_EPOCH: strtoull: %s: %llu\n",
+		     "Fontconfig: SOURCE_DATE_EPOCH: strtoull: %s: %" FC_UINT64_FORMAT "\n",
 		     strerror(errno), epoch);
 	else if (*endptr != '\0')
 	    fprintf (stderr,
 		     "Fontconfig: SOURCE_DATE_EPOCH has trailing garbage\n");
 	else if (epoch > ULONG_MAX)
 	    fprintf (stderr,
-		     "Fontconfig: SOURCE_DATE_EPOCH must be <= %lu but saw: %llu\n",
+		     "Fontconfig: SOURCE_DATE_EPOCH must be <= %lu but saw: %" FC_UINT64_FORMAT "\n",
 		     ULONG_MAX, epoch);
 	else if (epoch < ret)
 	    /* Only override if directory is newer */
diff --git a/src/fcint.h b/src/fcint.h
index 11efdba..88e0701 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -84,6 +84,10 @@
 #define FC_UNUSED
 #endif
 
+#ifndef FC_UINT64_FORMAT
+#define FC_UINT64_FORMAT	"llu"
+#endif
+
 #define FC_DBG_MATCH	1
 #define FC_DBG_MATCHV	2
 #define FC_DBG_EDIT	4
diff --git a/src/fcwindows.h b/src/fcwindows.h
index d18e1af..23331f5 100644
--- a/src/fcwindows.h
+++ b/src/fcwindows.h
@@ -51,6 +51,8 @@
 typedef SSIZE_T ssize_t;
 #endif
 
+#define FC_UINT64_FORMAT	"I64u"
+
 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
 
 #ifndef S_ISDIR