Piotr Caban (@piotr) commented about dlls/vccorlib140/tests/vccorlib.c:
+static HSTRING (*__cdecl p_Guid_ToString)(const GUID *); +#define SIMPLE_TOSTRING_FUNC(name, type) static HSTRING (__cdecl *p_##name##_ToString)(const type *); +#define SIMPLE_TOSTRING_FUNCS \ + SIMPLE_TOSTRING_FUNC(char16, WCHAR) \ + SIMPLE_TOSTRING_FUNC(float32, FLOAT) \ + SIMPLE_TOSTRING_FUNC(float64, DOUBLE) \ + SIMPLE_TOSTRING_FUNC(int16, INT16) \ + SIMPLE_TOSTRING_FUNC(int32, INT32) \ + SIMPLE_TOSTRING_FUNC(int64, INT64) \ + SIMPLE_TOSTRING_FUNC(int8, INT8) \ + SIMPLE_TOSTRING_FUNC(uint16, UINT16) \ + SIMPLE_TOSTRING_FUNC(uint32, UINT32) \ + SIMPLE_TOSTRING_FUNC(uint64, UINT64) \ + SIMPLE_TOSTRING_FUNC(uint8, UINT8) +SIMPLE_TOSTRING_FUNCS +#undef SIMPLE_TOSTRING_FUNC I prefer to avoid using too many `define`s since it makes the code much harder to read.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9403#note_121334