tableprint: Fix use of a size_t print with MSVC
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Tue, 15 Jan 2013 21:28:02 +0000 (16:28 -0500)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Tue, 15 Oct 2013 15:51:58 +0000 (16:51 +0100)
%zu was introduced in C99, so MSVC has its own way to handle it,
namely %Iu.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
libavcodec/tableprint.h

index 1b39dc6..26d063e 100644 (file)
@@ -71,10 +71,20 @@ void write_uint32_t_2d_array(const void *, int, int);
 void write_float_2d_array   (const void *, int, int);
 /** @} */ // end of printfuncs group
 
+/*
+ * MSVC doesn't have %zu, since it was introduced in C99,
+ * but has its own %Iu for printing size_t values.
+ */
+#if defined(_MSC_VER)
+#define FMT "Iu"
+#else
+#define FMT "zu"
+#endif
+
 #define WRITE_ARRAY(prefix, type, name)                 \
     do {                                                \
         const size_t array_size = FF_ARRAY_ELEMS(name); \
-        printf(prefix" "#type" "#name"[%zu] = {\n",     \
+        printf(prefix" "#type" "#name"[%"FMT"] = {\n",  \
                array_size);                             \
         write_##type##_array(name, array_size);         \
         printf("};\n");                                 \
@@ -84,7 +94,7 @@ void write_float_2d_array   (const void *, int, int);
     do {                                                                \
         const size_t array_size1 = FF_ARRAY_ELEMS(name);                \
         const size_t array_size2 = FF_ARRAY_ELEMS(name[0]);             \
-        printf(prefix" "#type" "#name"[%zu][%zu] = {\n",                \
+        printf(prefix" "#type" "#name"[%"FMT"][%"FMT"] = {\n",          \
                array_size1, array_size2 );                              \
         write_##type##_2d_array(name, array_size1, array_size2);        \
         printf("};\n");                                                 \