mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
gh-93202: Always use %zd printf formatter (#93201)
Python now always use the ``%zu`` and ``%zd`` printf formats to format a size_t or Py_ssize_t number. Building Python 3.12 requires a C11 compiler, so these printf formats are now always supported. * PyObject_Print() and _PyObject_Dump() now use the printf %zd format to display an object reference count. * Update PY_FORMAT_SIZE_T comment. * Remove outdated notes about the %zd format in PyBytes_FromFormat() and PyUnicode_FromFormat() documentations. * configure no longer checks for the %zd format and no longer defines PY_FORMAT_SIZE_T macro in pyconfig.h. * pymacconfig.h no longer undefines PY_FORMAT_SIZE_T: macOS 10.4 is no longer supported. Python 3.12 now requires macOS 10.6 (Snow Leopard) or newer.
This commit is contained in:
parent
9485a0dbdd
commit
71d8775fee
10 changed files with 11 additions and 168 deletions
46
configure.ac
46
configure.ac
|
|
@ -6004,52 +6004,6 @@ then
|
|||
LIBS="$LIBS -framework CoreFoundation"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SSIZE_T
|
||||
typedef ssize_t Py_ssize_t;
|
||||
#elif SIZEOF_VOID_P == SIZEOF_LONG
|
||||
typedef long Py_ssize_t;
|
||||
#else
|
||||
typedef int Py_ssize_t;
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
if(sprintf(buffer, "%zd", (size_t)123) < 0)
|
||||
return 1;
|
||||
|
||||
if (strcmp(buffer, "123"))
|
||||
return 1;
|
||||
|
||||
if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
|
||||
return 1;
|
||||
|
||||
if (strcmp(buffer, "-123"))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
]])],
|
||||
[ac_cv_have_size_t_format=yes],
|
||||
[ac_cv_have_size_t_format=no],
|
||||
[ac_cv_have_size_t_format="cross -- assuming yes"
|
||||
])])
|
||||
if test "$ac_cv_have_size_t_format" != no ; then
|
||||
AC_DEFINE(PY_FORMAT_SIZE_T, "z",
|
||||
[Define to printf format modifier for Py_ssize_t])
|
||||
fi
|
||||
|
||||
AC_CHECK_TYPE(socklen_t,,
|
||||
AC_DEFINE(socklen_t,int,
|
||||
[Define to `int' if <sys/socket.h> does not define.]),[
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue