我正在关注本教程,有点卡在这里:
该代码无法编译,错误消息是
c:35: error: invalid initializer
Run Code Online (Sandbox Code Playgroud)
我不确定这条线出了什么问题
XGCValues valu=CapButt|JoinBevel;
Run Code Online (Sandbox Code Playgroud)
事实上,我从上述教程中复制了它。这是我的完整代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
本教程中的示例是错误的 - 如果您查看<X11/Xlib.h>或阅读XCreateGC 手册页,您将看到XGCValues它是一个结构体,而不是整数类型,因此您需要使用以下内容来初始化它:
XGCValues values;
values.cap_style = CapButt;
values.join_style = JoinBevel;
Run Code Online (Sandbox Code Playgroud)