[Python-Dev] Pep 353: Py_ssize_t advice
"Martin v. Löwis"
martin at v.loewis.de
Fri Sep 22 22:14:42 CEST 2006
David Abrahams schrieb:
> #if PY_VERSION_HEX < 0x02050000
> typedef int Py_ssize_t;
> #define PY_SSIZE_T_MAX INT_MAX
> #define PY_SSIZE_T_MIN INT_MIN
> I just wanted to point out that this advice could lead to library
> header collisions when multiple 3rd parties decide to follow it. I
> suggest it be changed to something like:
> #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
Strictly speaking, this shouldn't be necessary. C allows redefinition
of an object-like macro if the replacement list is identical (for
some definition of identical which applies if the fragment is
copied literally from the PEP).
So I assume you had non-identical replacement list? Can you share
what alternative definition you were using?
In any case, I still think this is good practice, so I added it
to the PEP.
> (C++ allows restating of typedefs; if C allows it, that should be
> something like):
C also allows this; yet, our advise would be that these three
names get always defined together - if that is followed, having
a single guard macro should suffice. PY_SSIZE_T_MIN, as you propose,
should be sufficient.
More information about the Python-Dev