① sizeof 的用法。考这个很多。用baidu 搜索下sizeof的用法 主要就是计算结果。这个事填空题(很多小题)
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到/0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到/0为止之前
int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''/0''结尾的
②有个填空编程题。需要完成2个字符串的功能。大致框架已近写好,有几个判断条件需要填空
③有个编程题 需要完成strcmp的功能。不能用到C中已有的函数。这个在网上也有很多一样的题。
用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。
1.strcat
void mycat(char *s1, char *s2)
{
while(*s1++);
s1--;
while(*s1++ = *s2++);
}
2.strcpy
void mycpy(char *s1, char *s2)
{
while(*s1++ = *s2++);
}
3.strcmp
int mycmp(char *s1,char *s2)
{
for( ; *s == *t;s++,t++)
if(*s == 0) return 0;
return *s - *t;
}
4.strlen
int mylen(char *s1)
{
char *p = s1;
while(*p++);
return p - s -1;
}
5.strlwr
char* strlwr(char *s)
{ unsigned char AL;
register char *DX,*SI;
DX=SI=s;
while((AL=*SI++)!='/0')
{ AL-='A';
if(AL>'Z'-'A')continue;
SI[-1]+='a'-'A';
}
return DX;
}
④大题编程 MTK的showcategory(这个画屏函数的过程,怎么进入 怎么画左右软件。怎么设置左右功能等等,需要记住各个函数的名字)
void ShowCateMyScreen()
{
S32 i;
//初始化屏幕
EntryNewScreen(SCR_MYAPP_ID,mmi_myapp_exit,null,null);
gui_lock_double_buffer();
entry_full_screen();
clear_screen();
//初始化菜单框架
//move_fixed_list();
//初始化菜单单项公用数据
//注册按键
register_fixed_list_shortcut_handler();
register_fixed_list_keys();
register_fixed_list_highlight_handle(mmi_myapp_highlight_handler);
//显示菜单
fixed_list_goto_item_no_rerdraw(0);
show_fixed_list();
//显示左右软键
change_left_softkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
change_right_softkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
show_softkey(MMI_LEFT_SOFTKEY);
show_softkey(MMI_RIGHT_SOFTKEY);
SetLeftkeyFunction(do_action,Key_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory,Key_EVENT_UP);
gui_unlock_double_buffer();
gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);
}
4.1 U8 EntryNewScreen(u16 newscrnID,FuncPtr newExitHandler,FuncPtr newEntryHandler,void *peerBuf);
4.2 手动加入历史
history currHistory;
currhistory.scrnID= NEW_SCREENID;
AddHistory(currHistory);
4.3 开机初始化函数
InitializeAll()
⑤填空 什么办法在修改1个字符串后,最快的在modis上看到修改效果。
2). 编译方法:
进入..//plutommi//Customer目录,执行remakeResource.bat批处理文件。
编译成功会生成一些Cust*.*文件在//plutommi//Customer//CustResource目录下,编译代码时再编译这些文件;
编译失败到build目录下查看log文件 res_gen.txt,可看到出错信息。
3). 当我们改变了资源,想在PC模拟上看到修改效果时,也需要先执行如上的资源编译命令,
再在VC环境下build一下资源,就可以看到效果了。
⑥填空 怎么用modis模拟来电,需要用到什么工具(catcher).
用模拟器模拟拨号、来电、短信等
1. 在modis上的菜单Tools àLuanch Catchers & NS 选项
2. 然后选择Catchers工具的.exe文件
3. 在MoDIS Network Simulator 框上,点击START按钮,然后点击Inject按钮,这时来到了可以模拟很多事情的界面,可以根据自己的需要,模拟来电、短信等
MTK的高亮机制
1、 对于MTK平台中高亮事件的简单分析,仅涉及MMI层的应用
牵涉函数:
void SetHiliteHandler( U16 itemid, FuncPtr hiliteFuncPtr );
void RegisterHighlightHandler( void (*f)(S32 item_index) );
void ExecuteCurrHiliteHandler( S32 hiliteid );
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到/0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符
char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到/0为止之前
int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''/0''结尾的
②有个填空编程题。需要完成2个字符串的功能。大致框架已近写好,有几个判断条件需要填空
③有个编程题 需要完成strcmp的功能。不能用到C中已有的函数。这个在网上也有很多一样的题。
用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。
1.strcat
void mycat(char *s1, char *s2)
{
while(*s1++);
s1--;
while(*s1++ = *s2++);
}
2.strcpy
void mycpy(char *s1, char *s2)
{
while(*s1++ = *s2++);
}
3.strcmp
int mycmp(char *s1,char *s2)
{
for( ; *s == *t;s++,t++)
if(*s == 0) return 0;
return *s - *t;
}
4.strlen
int mylen(char *s1)
{
char *p = s1;
while(*p++);
return p - s -1;
}
5.strlwr
char* strlwr(char *s)
{ unsigned char AL;
register char *DX,*SI;
DX=SI=s;
while((AL=*SI++)!='/0')
{ AL-='A';
if(AL>'Z'-'A')continue;
SI[-1]+='a'-'A';
}
return DX;
}
④大题编程 MTK的showcategory(这个画屏函数的过程,怎么进入 怎么画左右软件。怎么设置左右功能等等,需要记住各个函数的名字)
void ShowCateMyScreen()
{
S32 i;
//初始化屏幕
EntryNewScreen(SCR_MYAPP_ID,mmi_myapp_exit,null,null);
gui_lock_double_buffer();
entry_full_screen();
clear_screen();
//初始化菜单框架
//move_fixed_list();
//初始化菜单单项公用数据
//注册按键
register_fixed_list_shortcut_handler();
register_fixed_list_keys();
register_fixed_list_highlight_handle(mmi_myapp_highlight_handler);
//显示菜单
fixed_list_goto_item_no_rerdraw(0);
show_fixed_list();
//显示左右软键
change_left_softkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
change_right_softkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
show_softkey(MMI_LEFT_SOFTKEY);
show_softkey(MMI_RIGHT_SOFTKEY);
SetLeftkeyFunction(do_action,Key_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory,Key_EVENT_UP);
gui_unlock_double_buffer();
gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);
}
4.1 U8 EntryNewScreen(u16 newscrnID,FuncPtr newExitHandler,FuncPtr newEntryHandler,void *peerBuf);
4.2 手动加入历史
history currHistory;
currhistory.scrnID= NEW_SCREENID;
AddHistory(currHistory);
4.3 开机初始化函数
InitializeAll()
⑤填空 什么办法在修改1个字符串后,最快的在modis上看到修改效果。
2). 编译方法:
进入..//plutommi//Customer目录,执行remakeResource.bat批处理文件。
编译成功会生成一些Cust*.*文件在//plutommi//Customer//CustResource目录下,编译代码时再编译这些文件;
编译失败到build目录下查看log文件 res_gen.txt,可看到出错信息。
3). 当我们改变了资源,想在PC模拟上看到修改效果时,也需要先执行如上的资源编译命令,
再在VC环境下build一下资源,就可以看到效果了。
⑥填空 怎么用modis模拟来电,需要用到什么工具(catcher).
用模拟器模拟拨号、来电、短信等
1. 在modis上的菜单Tools àLuanch Catchers & NS 选项
2. 然后选择Catchers工具的.exe文件
3. 在MoDIS Network Simulator 框上,点击START按钮,然后点击Inject按钮,这时来到了可以模拟很多事情的界面,可以根据自己的需要,模拟来电、短信等
MTK的高亮机制
1、 对于MTK平台中高亮事件的简单分析,仅涉及MMI层的应用
牵涉函数:
void SetHiliteHandler( U16 itemid, FuncPtr hiliteFuncPtr );
void RegisterHighlightHandler( void (*f)(S32 item_index) );
void ExecuteCurrHiliteHandler( S32 hiliteid );