Bug report
Bug description:
I wanted to compile Python but I got the following issue since #151748
In file included from ./Modules/_curses_panel.c:21:
./Include/py_curses.h:99:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
99 | PyObject *stdscr; /* the screen's standard window, or NULL */
| ^~~~~~~~
In file included from /usr/include/ncursesw/curses.h:90,
from ./Include/py_curses.h:47:
./Include/py_curses.h:99:15: error: field ‘_nc_stdscr’ declared as a function
99 | PyObject *stdscr; /* the screen's standard window, or NULL */
| ^~~~~~
make: *** [Makefile:3791: Modules/_curses_panel.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ./Modules/_cursesmodule.c:108:
./Include/py_curses.h:99:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
99 | PyObject *stdscr; /* the screen's standard window, or NULL */
| ^~~~~~~~
In file included from /usr/include/ncursesw/curses.h:90,
from ./Include/py_curses.h:47:
./Include/py_curses.h:99:15: error: field ‘_nc_stdscr’ declared as a function
99 | PyObject *stdscr; /* the screen's standard window, or NULL */
| ^~~~~~
./Modules/_cursesmodule.c:5128:20: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
5128 | FILE *outfp, FILE *infp, PyObject *stdscr)
| ^~~~
./Modules/_cursesmodule.c: In function ‘PyCursesScreen_New’:
./Modules/_cursesmodule.c:5138:16: error: lvalue required as left operand of assignment
5138 | so->stdscr = Py_XNewRef(stdscr);
| ^
In file included from ./Include/Python.h:80,
from ./Modules/_cursesmodule.c:96:
./Modules/_cursesmodule.c: In function ‘PyCursesScreen_clear’:
./Include/refcount.h:485:39: error: lvalue required as unary ‘&’ operand
485 | _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
| ^
./Modules/_cursesmodule.c:5200:5: note: in expansion of macro ‘Py_CLEAR’
5200 | Py_CLEAR(so->stdscr);
| ^~~~~~~~
./Modules/_cursesmodule.c: In function ‘_curses_newterm_impl’:
./Modules/_cursesmodule.c:6727:49: error: lvalue required as left operand of assignment
6727 | ((PyCursesScreenObject *)screenobj)->stdscr = Py_NewRef(win);
| ^
make: *** [Makefile:3789: Modules/_cursesmodule.o] Error 1
The problem is that my ncursesw/ncurses.h contains
#define stdscr NCURSES_PUBLIC_VAR(stdscr())
And thus using stdscr is not a valid identifier in the struct or in the parameter functions.
cc @serhiy-storchaka
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
Bug report
Bug description:
I wanted to compile Python but I got the following issue since #151748
The problem is that my
ncursesw/ncurses.hcontainsAnd thus using
stdscris not a valid identifier in the struct or in the parameter functions.cc @serhiy-storchaka
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
curseson platforms that define thestdscrmacro #153010