这段代码可以编译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)
我的问题是:
"include"之前运算符"#"的含义是什么.我们#include <stdio.h>
用来包含头文件,为什么不include <stdio.h>
呢?
为什么# 22
或# 41
可以编译,我以前从未见过它.
有人可以帮帮我吗?
我几乎用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位.
每个插槽:
将第一位与最后一位组合得到X
;
获得中间4位得到Y
;
做的东西(X, Y)
;
例如,011110
是一个插槽,所以X = 00
和Y = …
我正在实现一个时间选择器,如下所示:
那个黄色的块是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