Skip to content

Compile error on Cygwin due to stdscr macro conflict #117

@fd00

Description

@fd00

environment

  • ruby/curses: 1.5.3 (also reproducible on master)
  • ncurses: 6.4
compiling curses.c
In file included from /usr/include/curses.h:90,
                 from curses.c:26:
curses.c:1699:11: error: field ‘ncwrap_stdscr’ declared as a function
 1699 |     VALUE stdscr;
      |           ^~~~~~
curses.c: In function ‘screen_initialize’:
curses.c:1780:21: error: lvalue required as left operand of assignment
 1780 |     screenp->stdscr = Qnil;
      |                     ^
curses.c: In function ‘screen_set_term’:
curses.c:1799:25: error: lvalue required as left operand of assignment
 1799 |         screenp->stdscr = prep_window(cWindow, stdscr, 1);
      |                         ^

On Cygwin, stdscr is defined as a macro in curses.h
(see: https://github.com/mirror/ncurses/blob/v6.4/include/curses.h.in#L1466).
This conflicts with the stdscr member in the struct screendata.

Would it be possible to rename the stdscr member in struct screendata to avoid the conflict?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions