Ошибка инициализации XGCValues - PullRequest
       7

Ошибка инициализации XGCValues

2 голосов
/ 03 февраля 2010

Я читал этот учебник, немного застрял здесь:

Этот код не компилируется, и сообщение об ошибке

c:35: error: invalid initializer

Я не уверен, что не так с линией

XGCValues valu=CapButt|JoinBevel;

На самом деле, я скопировал его из указанного урока. Вот полный код, который у меня есть:

#include <stdio.h>
#include <X11/Xlib.h>
#include <unistd.h>

int main()
{
     Display *display=XOpenDisplay(NULL);
     int scr=DefaultScreen(display);
     Window root_window=RootWindow(display,scr);
     unsigned int width=DisplayWidth(display,scr)/3;
     unsigned int height=DisplayHeight(display,scr)/3;
     unsigned int border=2;

     Window      my_win=XCreateSimpleWindow(display,root_window,0,0,width,height,border,BlackPixel(display,scr),WhitePixel(display,scr));
     GC gc;
     XGCValues valu=CapButt|JoinBevel;
     unsigned long valmask=GCCapStyle|GCJoinStyle;
     gc=XCreateGC(display,my_win,valmask,&valu);
     XDrawLine(display,my_win,gc,5,5,20,20);

     XMapWindow(display,my_win);
     XFlush(display);
     sleep(10);
     return 0;
 }

Спасибо

1 Ответ

3 голосов
/ 03 февраля 2010

Пример в руководстве неверен - если вы заглянете в <X11/Xlib.h> или прочитаете XCreateGC man pag e, вы увидите, XGCValues - это структура, а не целочисленный тип, так что вы бы нужно инициализировать что-то вроде:

XGCValues values;

values.cap_style = CapButt;
values.join_style = JoinBevel;
...