小编zvn*_*zvn的帖子

箭头键作为快捷键?

是否可以将箭头键用作访问键,例如Ctrl+ Alt+ rightArrowKey中的组合键?

html

5
推荐指数
1
解决办法
4238
查看次数

初始化 XGCValues 时出错

我正在关注教程,有点卡在这里:

该代码无法编译,错误消息是

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)

谢谢

linux x11

2
推荐指数
1
解决办法
875
查看次数

二进制补码形式的64位负整数

我正在阅读GNU PDF库的源代码,特别是它们对64位整数的实现.他们将64位整数定义为两个32位整数的结构 - 高阶int是有符号的,低阶int是无符号的.这是头文件中的相关代码:

/*Definition of internal structure of the pdf_i64_t type*/
struct pdf_i64_s
{
  pdf_i32_t   high;
  pdf_u32_t low;
};

typedef struct pdf_i64_s pdf_i64_t;
Run Code Online (Sandbox Code Playgroud)

根据架构手册,负数以二进制补码形式表示.我对此功能有疑问:

[来自pdf-types.c的代码]

void pdf_i64_assign_quick (pdf_i64_t *bignum,
                      const pdf_i32_t value,
                  pdf_status_t *p_status)
{
  ASSIGN_SAFE(p_status, PDF_OK);

  if (bignum != NULL)
    {
      if (value < 0)
        {
          bignum->high = 0xFFFFFFFF;
        }
      else
        {
          bignum->high = 0;
        }
      bignum->low = value;
    }
  else
    {
      ASSIGN_SAFE(p_status, PDF_ERROR);
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,要获得数字的二进制补码,您需要反转所有位并将结果加1.但是在上面的函数中,对于值<0,它们只是将高阶位设置为0xFFFFFFFF,而根本不改变低阶位.不应该将'value'的位反转,然后加1?有人可以解释一下吗?

谢谢.

c bit-manipulation bignum

2
推荐指数
1
解决办法
1767
查看次数

标签 统计

bignum ×1

bit-manipulation ×1

c ×1

html ×1

linux ×1

x11 ×1