2010-02-03 1 views
2

Я был ниже this учебник, бит застрял здесь:Ошибка инициализации XGCValues ​​

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

c:35: error: invalid initializer 

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

XGCValues valu=CapButt|JoinBevel; 

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

#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; 
} 

Спасибо

ответ

3

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

XGCValues values; 

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

Большое спасибо. Это устранило проблему. Я уверен, что учебные пособия и stackoverflow и google search являются непревзойденными: D –

Смежные вопросы