gh-107249: Implement Py_UNUSED() for MSVC (GH-107250)
Fix warnings C4100 in Py_UNUSED() when Python is built with "cl /W4".
Example with this function included by Python.h:
static inline unsigned int
PyUnicode_IS_READY(PyObject* Py_UNUSED(op))
{ return 1; }
Without this change, building a C program with "cl /W4" which just
includes Python.h emits the warning:
Include\cpython/unicodeobject.h(199):
warning C4100: '_unused_op': unreferenced formal parameter
This change fix this warning.
(cherry picked from commit
6a43cce32b66e0f66992119dd82959069b6f324a)
Co-authored-by: Victor Stinner <vstinner@python.org>
*/
#if defined(__GNUC__) || defined(__clang__)
# define Py_UNUSED(name) _unused_ ## name __attribute__((unused))
+#elif defined(_MSC_VER)
+ // Disable warning C4100: unreferenced formal parameter,
+ // declare the parameter,
+ // restore old compiler warnings.
+# define Py_UNUSED(name) \
+ __pragma(warning(push)) \
+ __pragma(warning(suppress: 4100)) \
+ _unused_ ## name \
+ __pragma(warning(pop))
#else
# define Py_UNUSED(name) _unused_ ## name
#endif
--- /dev/null
+Implement the :c:macro:`Py_UNUSED` macro for Windows MSVC compiler. Patch by
+Victor Stinner.