-#ifndef MACRO_H
-#define MACRO_H
+#pragma once
#if 1
- void voidfunc() { error("voidfunc"); }
+ void voidfunc() { }
#define MACRO_BEGIN if (1) {
#define MACRO_END } else voidfunc()
#else
#define MACRO_END } while (0)
#endif
-#endif
+/** Marker for use in (RVALUE, (expr)) */
+#define RVALUE 0
+
+#define _CAT(a, b) a ## b
+#define CAT(a, b) _CAT(a, b)
+
+#define _STR(it) #it
+#define STR(it) _STR(it)
+
+#define EMPTY()
+#define DEFER(id) id EMPTY()