gh-107249: Implement Py_UNUSED() for MSVC (#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.
This commit is contained in:
Victor Stinner 2023-07-25 19:28:16 +02:00 committed by GitHub
parent fabcbe9c12
commit 6a43cce32b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -118,6 +118,15 @@
*/ */
#if defined(__GNUC__) || defined(__clang__) #if defined(__GNUC__) || defined(__clang__)
# define Py_UNUSED(name) _unused_ ## name __attribute__((unused)) # 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 #else
# define Py_UNUSED(name) _unused_ ## name # define Py_UNUSED(name) _unused_ ## name
#endif #endif

View File

@ -0,0 +1,2 @@
Implement the :c:macro:`Py_UNUSED` macro for Windows MSVC compiler. Patch by
Victor Stinner.