terminal_interface-curses-mouse.ads
의 관련 선언을 보지 않고서는 확실히 말할 수 없습니다. 그러나 Event_Mask
크기의 충돌이 의심됩니다. 나는 그것을 시도 할 때,이 라인은 terminal_interface-curses-mouse.ads.m4
에 하드 와이어 된 :
type Event_Mask is new Interfaces.C.unsigned_long;
하지만 Mouse_Event
의 담당자 절은 다음과 같이 입력 Event_Mask
의, Bstate
정의
Bstate at 0 range 128 .. 159;
이이 유형을 기반으로 내 시스템에서 이 <ncurses.h>
이고 unsigned
입니다. unsigned_long
이 64 비트이고 C의 unsigned
유형이 32이면 컴파일러에서 불만을 제기합니다.
이 수동으로
type Event_Mask is new Interfaces.C.unsigned_long range 0 .. 2**32 - 1;
for Event_Mask'Size use 32;
또는
에
type Event_Mask
라인을 변경하려고, 무슨 일이 일어나고 있는지 경우 희망에 새로운 유형의 충돌을 유발하지 않고 "너무 작은 크기"문제를을 피할 수
type Event_Mask is new Interfaces.C.unsigned_long range 0 .. 2**32 - 1 with Size => 32;
나머지 코드. 그러나 나는 그것을 테스트하지 않았다.
Event_Mask
유형은 이와 같이 하드 와이어되어서는 안되기 때문에 버그로보고해야합니다.
편집 : 그것은 나중에 Event_Mask
파생 형이기 때문에, 범위 제한으로 Interfaces.C.unsigned_long
에서 파생 아무런 혜택이 없다는 것을 때까지 나에게 발생하지 않았다. mmask_t
가정하면 .h
파일에 unsigned
으로 정의된다, 그것은 당신이 수동으로 변경해야하고, 정말 .m4
파일 및 발전기 권리를 알아 내기 위해 고정 할 필요가
type Event_Mask is new Interfaces.C.unsigned;
말을 단지뿐만 아니라 작동합니다 이 때문에 ncurses
의 버그로 간주되어야합니다.
출처
2014-07-09 17:11:20
ajb
좋은 시작점은 terminal_interface-curses-mouse.ads:180:10을 둘러싼 코드를 표시하는 것이고 더 구체적으로 문제의 Event_Mask를 정의하는 모든 코드를 표시하는 것입니다. 우리는 도와 드리겠습니다. 그러나 여기에서 화면을 읽을 수는 없습니다 ... –