vmstate: only enable when building under GNU C

To be able to use typeof.

Fixes #24604
diff --git a/src/state.c b/src/state.c
index 8708547..770711c 100644
--- a/src/state.c
+++ b/src/state.c
@@ -26,6 +26,8 @@
 #include "vmstate.h"
 #include "stream.h"
 
+#ifdef HAVE_VMSTATE
+
 static int slirp_tcp_post_load(void *opaque, int version)
 {
     tcp_template((struct tcpcb *)opaque);
@@ -377,3 +379,5 @@
 {
     return 4;
 }
+
+#endif /* HAVE_VMSTATE */
diff --git a/src/vmstate.c b/src/vmstate.c
index 68cc172..c7fc5a3 100644
--- a/src/vmstate.c
+++ b/src/vmstate.c
@@ -45,6 +45,8 @@
 #include "stream.h"
 #include "vmstate.h"
 
+#ifdef HAVE_VMSTATE
+
 static int get_nullptr(SlirpIStream *f, void *pv, size_t size,
                        const VMStateField *field)
 {
@@ -442,3 +444,5 @@
     }
     return ret;
 }
+
+#endif /* HAVE_VMSTATE */
diff --git a/src/vmstate.h b/src/vmstate.h
index e3e2459..64dd256 100644
--- a/src/vmstate.h
+++ b/src/vmstate.h
@@ -39,6 +39,9 @@
 #ifndef VMSTATE_H_
 #define VMSTATE_H_
 
+#ifdef __GNUC__
+#define HAVE_VMSTATE 1
+
 #include <unistd.h>
 #include <stdint.h>
 #include <stdbool.h>
@@ -392,4 +395,6 @@
         .flags = VMS_END,     \
     }
 
-#endif
+#endif /* __GNUC__ */
+
+#endif /* VMSTATE_H_ */