小编Ant*_*per的帖子

C语言:运算符"#"的含义?

这段代码可以编译gcc -g -o main main.c,没有警告.

// main.c
# 41 "stdio.h"
# 22
#
int main(void){
    (void)printf("foo");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. "include"之前运算符"#"的含义是什么.我们#include <stdio.h>用来包含头文件,为什么不include <stdio.h>呢?

  2. 为什么# 22# 41可以编译,我以前从未见过它.

有人可以帮帮我吗?

c

14
推荐指数
1
解决办法
435
查看次数

48位8个6位单元串:如何快速获得每个单元的中间4位

我几乎用C语言实现了DES算法,我想优化我的代码.所以我用过gprof.以下是报告的一部分:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
 51.78      9.32     9.32  8000000     1.17     1.17  sboxes
 34.71     15.57     6.25  8000000     0.78     0.78  extendRight
  9.90     17.35     1.78   500000     3.56    35.96  operation
  2.39     17.78     0.43  8000000     0.05     0.05  xorRightAndKey
Run Code Online (Sandbox Code Playgroud)

gprof表明该sboxes功能占51.78%的时间.

sboxes(uchar aucData[6], ...),我被给予48位,将它们分成8个插槽,每个插槽为6位.

每个插槽:

  1. 将第一位与最后一位组合得到X;

  2. 获得中间4位得到Y;

  3. 做的东西(X, Y);

例如,011110是一个插槽,所以X = 00Y = …

c algorithm assembly des

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

刷新时,Android自定义视图会移回原始位置

我正在实现一个时间选择器,如下所示:

未完成的时间选择器

那个黄色的块是MyCustomView.移动时MyCustomView,我应该计算新的日期和设置tvDate.

部分布局文件:

<LinearLayout 
    android:orientation="vertical">

    <TextView android:id="@+id/tv_date">

    <RelativeLayout 
        android:id="@+id/rl">

        <MyCustomView
         android:layout_centerInParent="true"/>

        <OtherViews/>
    </RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

码:

class MyCustomView extends View{

    // move listener
    public interface IMoveCallback{
        void update(int index);
    }

    private IMoveCallback listener = null; 

    // set listener
    public void setMoveCallback(IMoveCallback callback){
        this.listener = callback;
    }

    @Override
    protected void onDraw(Canvas c){
        super.onDraw(c);
        // draw yellow block and four arrows here.
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        processDrag(v, event);
        invalidate();
        return false;
    } …
Run Code Online (Sandbox Code Playgroud)

java android android-custom-view android-layout android-studio

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