]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-107249: Implement Py_UNUSED() for MSVC (GH-107250) (#127907)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 13 Dec 2024 11:58:47 +0000 (12:58 +0100)
committerGitHub <noreply@github.com>
Fri, 13 Dec 2024 11:58:47 +0000 (11:58 +0000)
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>
Include/pymacro.h
Misc/NEWS.d/next/C API/2023-07-25-17-23-08.gh-issue-107249.xqk2ke.rst [new file with mode: 0644]

index d5700dc38933c49803f7db8aed4526279d5968a0..94e6248d2832cd4388b4f43834e91cdf78bc2692 100644 (file)
  */
 #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
diff --git a/Misc/NEWS.d/next/C API/2023-07-25-17-23-08.gh-issue-107249.xqk2ke.rst b/Misc/NEWS.d/next/C API/2023-07-25-17-23-08.gh-issue-107249.xqk2ke.rst
new file mode 100644 (file)
index 0000000..a713902
--- /dev/null
@@ -0,0 +1,2 @@
+Implement the :c:macro:`Py_UNUSED` macro for Windows MSVC compiler. Patch by
+Victor Stinner.