I don’t understand your example: #define Py_SIZEOF_VOID_P _Py_SIZEOF_VOID_P defines a macro to.. itself? The new name is also private?
I don’t think that it’s a good idea that developers rely on macros generated by Python configure script. These macros may disappear later if Python configure script evolves.
I don’t like the idea of making these macros more visible. I would prefer to discourage their usage. I implemented a check for that in Python 3.16: https://github.com/python/cpython/issues/157695 makes sure that new macros have a name starting with Py (or _Py for private macros): don’t add more HAVE_xxx or SIZEOF_xxx macros. For example, Python 3.16 adds a private _Py_HAVE_ACOSPI macro (name starts with _Py): macro checking if acospi() function is available.