Repository navigation
Commit e06aab3
committed
gh-160704: Restore C11-C17
`_Py_STDC_VERSION` needs to be defined before its value can be checked.
In 8335bcb (gh-160208: Add a private wrapper around __STDC_VERSION__
(GH-160376), 2026-10-23), the condition `defined(_Py_STDC_VERSION)` is
incorrectly negated, which prevents the fallback definition of
`static_assert` in C11-C17 builds and causes a build error when building
with an old C library that does not define `static_assert`.
Below is an example when building CPython 3.15.2 with glibc 2.13:
gcc -pthread -c -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I/usr/local/src/python/Include/internal -I/usr/local/src/python/Include/internal/mimalloc -IObjects -IInclude -IPython -I. -I/usr/local/src/python/Include -DPy_BUILD_CORE -o Objects/longobject.o /usr/local/src/python/Objects/longobject.c
In file included from /usr/local/src/python/Include/Python.h:70,
from /usr/local/src/python/Objects/longobject.c:5:
/usr/local/src/python/Include/internal/pycore_bitutils.h: In function '_Py_popcount32':
/usr/local/src/python/Include/pymacro.h:175:13: error: implicit declaration of function 'static_assert' [-Wimplicit-function-declaration]
175 | static_assert((cond), #cond); \
| ^~~~~~~~~~~~~
/usr/local/src/python/Include/internal/pycore_bitutils.h:100:5: note: in expansion of macro 'Py_BUILD_ASSERT'
100 | Py_BUILD_ASSERT(sizeof(x) <= sizeof(unsigned int));
| ^~~~~~~~~~~~~~~
make: *** [Makefile:3407: Objects/longobject.o] Error 1
Restore compilation in such environments by fixing the negation.
Signed-off-by: Ruoyu Zhong <zhongruoyu@outlook.com>static_assert fallback1 parent c436e8d commit e06aab3
2 files changed
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
0 commit comments