2010-02-03 166 views
2

我下面this教程,这里有点卡住:初始化错误XGCValues

此代码不能编译,并且错误消息是

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

谢谢

回答

3

本教程中的例子是错误的 - 如果你在<X11/Xlib.h>看或阅读XCreateGC man pagË你会看到XGCValues是一个结构,而不是一个整体类型,所以你需要用类似的东西初始化它:

XGCValues values; 

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

非常感谢。这已经解决了这个问题。我相信教程和stackoverflow和谷歌搜索是无与伦比的:D – 2017-03-20 10:58:58