mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Doc: define PY_SSIZE_T_CLEAN always (GH-12794)
This commit is contained in:
parent
a304b136ad
commit
c88feceb44
10 changed files with 22 additions and 4 deletions
|
@ -48,7 +48,8 @@ Include Files
|
||||||
All function, type and macro definitions needed to use the Python/C API are
|
All function, type and macro definitions needed to use the Python/C API are
|
||||||
included in your code by the following line::
|
included in your code by the following line::
|
||||||
|
|
||||||
#include "Python.h"
|
#define PY_SSIZE_T_CLEAN
|
||||||
|
#include <Python.h>
|
||||||
|
|
||||||
This implies inclusion of the following standard headers: ``<stdio.h>``,
|
This implies inclusion of the following standard headers: ``<stdio.h>``,
|
||||||
``<string.h>``, ``<errno.h>``, ``<limits.h>``, ``<assert.h>`` and ``<stdlib.h>``
|
``<string.h>``, ``<errno.h>``, ``<limits.h>``, ``<assert.h>`` and ``<stdlib.h>``
|
||||||
|
@ -60,6 +61,9 @@ This implies inclusion of the following standard headers: ``<stdio.h>``,
|
||||||
headers on some systems, you *must* include :file:`Python.h` before any standard
|
headers on some systems, you *must* include :file:`Python.h` before any standard
|
||||||
headers are included.
|
headers are included.
|
||||||
|
|
||||||
|
It is recommended to always define ``PY_SSIZE_T_CLEAN`` before including
|
||||||
|
``Python.h``. See :ref:`arg-parsing` for a description of this macro.
|
||||||
|
|
||||||
All user visible names defined by Python.h (except those defined by the included
|
All user visible names defined by Python.h (except those defined by the included
|
||||||
standard headers) have one of the prefixes ``Py`` or ``_Py``. Names beginning
|
standard headers) have one of the prefixes ``Py`` or ``_Py``. Names beginning
|
||||||
with ``_Py`` are for internal use by the Python implementation and should not be
|
with ``_Py`` are for internal use by the Python implementation and should not be
|
||||||
|
|
|
@ -53,6 +53,7 @@ interface. This interface is intended to execute a Python script without needing
|
||||||
to interact with the application directly. This can for example be used to
|
to interact with the application directly. This can for example be used to
|
||||||
perform some operation on a file. ::
|
perform some operation on a file. ::
|
||||||
|
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -55,8 +55,9 @@ called ``spam``, the C file containing its implementation is called
|
||||||
:file:`spammodule.c`; if the module name is very long, like ``spammify``, the
|
:file:`spammodule.c`; if the module name is very long, like ``spammify``, the
|
||||||
module name can be just :file:`spammify.c`.)
|
module name can be just :file:`spammify.c`.)
|
||||||
|
|
||||||
The first line of our file can be::
|
The first two lines of our file can be::
|
||||||
|
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
which pulls in the Python API (you can add a comment describing the purpose of
|
which pulls in the Python API (you can add a comment describing the purpose of
|
||||||
|
@ -68,6 +69,9 @@ the module and a copyright notice if you like).
|
||||||
headers on some systems, you *must* include :file:`Python.h` before any standard
|
headers on some systems, you *must* include :file:`Python.h` before any standard
|
||||||
headers are included.
|
headers are included.
|
||||||
|
|
||||||
|
It is recommended to always define ``PY_SSIZE_T_CLEAN`` before including
|
||||||
|
``Python.h``. See :ref:`parsetuple` for a description of this macro.
|
||||||
|
|
||||||
All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` or
|
All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` or
|
||||||
``PY``, except those defined in standard header files. For convenience, and
|
``PY``, except those defined in standard header files. For convenience, and
|
||||||
since they are used extensively by the Python interpreter, ``"Python.h"``
|
since they are used extensively by the Python interpreter, ``"Python.h"``
|
||||||
|
@ -729,7 +733,8 @@ it returns false and raises an appropriate exception.
|
||||||
Here is an example module which uses keywords, based on an example by Geoff
|
Here is an example module which uses keywords, based on an example by Geoff
|
||||||
Philbrick (philbrick@hks.com)::
|
Philbrick (philbrick@hks.com)::
|
||||||
|
|
||||||
#include "Python.h"
|
#define PY_SSIZE_T_CLEAN /* Make "s#" use Py_ssize_t rather than int. */
|
||||||
|
#include <Python.h>
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds)
|
keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds)
|
||||||
|
@ -1228,7 +1233,7 @@ The function :c:func:`spam_system` is modified in a trivial way::
|
||||||
|
|
||||||
In the beginning of the module, right after the line ::
|
In the beginning of the module, right after the line ::
|
||||||
|
|
||||||
#include "Python.h"
|
#include <Python.h>
|
||||||
|
|
||||||
two more lines must be added::
|
two more lines must be added::
|
||||||
|
|
||||||
|
|
|
@ -280,6 +280,7 @@ solution then is to call :c:func:`PyParser_ParseString` and test for ``e.error``
|
||||||
equal to ``E_EOF``, which means the input is incomplete. Here's a sample code
|
equal to ``E_EOF``, which means the input is incomplete. Here's a sample code
|
||||||
fragment, untested, inspired by code from Alex Farber::
|
fragment, untested, inspired by code from Alex Farber::
|
||||||
|
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include <node.h>
|
#include <node.h>
|
||||||
#include <errcode.h>
|
#include <errcode.h>
|
||||||
|
@ -318,6 +319,7 @@ complete example using the GNU readline library (you may want to ignore
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <readline.h>
|
#include <readline.h>
|
||||||
|
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include <object.h>
|
#include <object.h>
|
||||||
#include <compile.h>
|
#include <compile.h>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue