|
|
1. Q:
什么是Symbian
OS??
A:
也被称作EPOC系统,这是最早由Psion[宝意昂]公司开发的一个专门应用于手机等移动设备的操作系统。目前由诺基亚、爱立信、松下、三星、索尼爱立信和西门子等手机巨头共同拥护,占据了智能手机操作系统市场70%以上的份额。以下是几个基础方面提供平台级支持:
|
协议标准
|
TCP,IPv4,IPv6,蓝牙,Java,WAP,SyncML,USB
|
|
通讯能力
|
支持多任务、面向对象基于组件方式的2G、2.5G和3G系统及应用开发,GSM,GPRS,HSCSD,EDGE,CDMA(IS-95)以及2000技术支持
|
|
信息定制
|
SMS、EMS、MMS、EMAIL和FAX支持
|
|
应用丰富
|
名片管理、通讯录、信息服务等
|
|
安全稳定
|
数据完整性支持,可靠高效的电池管理,数据同步,数据加密,证书管理,软件安装管理
|
|
多媒体
|
图片、音乐、以及视频浏览
|
|
互联网
|
互联网连接和浏览以及内容下载,POP3/SMTP/IMAP4
|
|
国际化
|
支持Unicode,多种字体和文字格式
|
2. Q:symbian的主要类有哪些?
A: 四大天王:CaknApplication,CeikDocument,CAknAppUi,CAknView
①话框类CEikDialog(ok/cancel)主要成员函数有:
void PreLayoutDynInitL();//处理在对话框出现之前的初始化动作
TBool OkToExitL( TInt aButtonId );//对OK按的处理
Void HandleControlStateChangL(Tint
aControlId);//监听对话框上控件改动,有点类似与Appui类的void CAknAppUi::
HandleCommandL(TInt aCommand)
②周期类 Cperiodic、Rtimer、Ttime
③字符串类
TDesC是所有字符类的祖先
|
|
标准C语言
|
Symbian
OS
|
|
让一个字符串进入2进制代码
|
Static char hellorom[]="hello"
|
_LIT(khellorom,"hello")
|
|
在栈中获得字符串的指针
|
Const char* helloptr=hellorom
|
TPtrC helloptr=khellorom
|
|
获得在栈中字符串的指针
|
Char hellostack[sizeof(hellorom)];
Strcpy(hellostack,hellorom);
|
TBufC<5> hellostack=khellorom;
|
|
获得在堆中字符串的指针
|
Char* helloheap=
(char *)malloc(sizeof(hellorom));
strcpy(helloheap,hellorom);
|
HBufC* helloheap=
Khellorom.AllocLC();
|
a)TPtrC相当于不变的字符串常量.
b)TPtr相当与String类型。Tbuf相当于char[]。前者与后者的唯一区别是,后者需要指定分配的栈空间大小。
C)HBufC* 与char*类似。分配的是堆上的空间。
④文件类和操作流
(由于篇幅问题,具体内容参照http://www.sf.org.cn/Article/lumen/200606/18564.html)
3. Q: 在VC中的CString类,可以用什么代替呢?
A:
Symbian平台上提供了描述符用于处理字符串,其中HBufC是在heap上创建的,并且提供了ReAlloc()用于重新分配空间,但是不会像CString那样在空间不够时自动分配,需要自己做处理.
4. Q:帮一个网上朋友问的问题写的程序,犯了N个严重错误。(version1为原始程序,version2为修改后)
A: version1?????????????????????????????????????????
#include <iostream>?????????????????????????????????????????????????????????????????????
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
using namespace std;
inflatable * guests = new inflatable [2];
guests[0] ->= {"Bambi", 0.5, 21.99};
guests[1] ->= {"Godzilla", 2000, 565.99};
cout << "The guests " << guests[0]->name << " and " << guests[1]->name
<< "\nhave a combined volume of "
<< guests[0]->volume + guests[1]->volume << " cubic feet.\n";
delete [] guests;
return 0;
}
Version 2
#include <iostream>
//using namespace std;
#include <string>
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
using namespace std;
inflatable *guests = new inflatable [2];
strcpy(guests->name,"Bambi");
guests->price = 0.5;
guests->volume = 21.99;
strcpy((guests+1)->name,"Godzilla");
(guests+1)->price = 2000;
(guests+1)->volume = 565.99;
// guests[0] = {"Bambi", 0.5, 21.99};
// guests[1] = {"Godzilla", 2000, 565.99};
cout << "The guests " << guests->name << " and " << (guests+1)->name
<< "\nhave a combined volume of "
<< guests->volume + (guests+1)->volume << " cubic feet.\n";
delete [] guests;
return 0;
}
总结,对C++不熟悉了,基本语法忘记,需要加强练习。
5. Q:C++调试中有些什么技巧?
A:四种小技巧分别为:
①调试标记
适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif
进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列:
#define DEBUG
#ifdef DEBUG
调试代码
#endif
②运行期间调试标记
在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。
#include<iostream>
#include <string>
using namespace std;
bool debug =false;
int main(int argc,char*argv[])
{
for(int i=0;i<argc;i++)
if(string(argv[i])=="--debug=on")
debug = true;
bool go=true;
while(go) {
if(debug)
{
调试代码
}else {}
}
}
③3.把变量和表达式转换成字符串
可是使用字符串运算符来实现转换输出定义
#define PR(x) cout<<#x"="<<x<<'\n'
④c语言的assert()
该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。
#include< assert>
using namsapce std;
int main()
{
int i=100;
assert(i!=100); //Fails
}
当调试完毕后在#include<assert>前加入#define NDEBUG即可消除红产生的代码
}
|