Symbian OS 开发初级手册 7 Descriptors

本文简介Descriptor Symbian OS 中不使用我们所熟悉的c 字符串(char*) 或者c++ string Symbian 的字符串是通过descriptor实现的。我们的第一个Symbian 程序,文字版Helloworld中是这样使用的: _LIT(KHelloWorldText,"Hello world!n");
console->Printf(KHelloWorldText);
_LIT()
是一个宏,它声明了一个descriptorKHelloWorldText 其内容是"Hello world!"。下面console->Printf的参数就是一个descriptor.
Descirptor
是一个灵活的设计, 它充分考虑到小型设备的各种局限性。 为此提供了很个类,有些是可以修改的,有些是不能修改的, 有些放在stack上,有些放在heap上。 NewLC网站上有一个descriptor的结构图:http://www.newlc.com/article.php3?id_article=12

继承图
其中包含了八个类, 这些并不是全部的descriptor类, 但是已经足够我们课程目前的使用。其中TDesC是最基本的类。 其他所有的descriptor类都是由它继承而来。 TDes是最基本的可以修改的类。凡是以C后缀的类都是不可修改的。
结构图下面是5各最常用的descriptor类的内存示意图。
TBufC<5>
中的5是它的长度, 它表示的是"NewLC"这个字符串, 是不可更改的。
TBuf<8> 8
是它的最大长度, 而当前只使用了5个字节,它的内容是可更改的,但是注意内容长度不可以大于他的最大长度
TPtrC
是一个descriptor 指针类, 它是一个不可修改的指针, 指向不可修改的"NewLC"的地址。
TPtr
是一个可修改的descriptor指针类, 指向可修改的"NewLC"的地址。
HBufC
H代表Heap,是专门用来在Heap上创建字符串, 其他的descriptor类的字符串一般都放在stack上。
一般来说要尽可能的使用heap内存, 因为stack的内存要更有限, 如果在stack上访大量的字符串就很容易导致内存不足。
这些类都由很多函数来使用,修改,查询他们的字符串, 大家可以参考Developer Library中的API Reference.
_LIT()
还有一个更简单的版本, helloworld中的两行可以改写为:
console->Printf(_L("Hello world!n"));

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值