惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
宝玉的分享
宝玉的分享
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
P
Proofpoint News Feed
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Martin Fowler
Martin Fowler

博客园 - 不明飞行物

磨刀不误砍柴工-打造超级Symbian开发环境 Symbian OS 开发初级手册 (8) 多线程 Symbian OS 开发初级手册 (6) CleanupStack and Two-phase Symbian OS 开发初级手册 5 - Leave Symbian OS 开发初级手册 (4) mmp, pkg 文件 和 makesis 工具 Symbian OS 开发初级手册 (3)GUI程序中的4个基本类 Symbian OS 开发初级手册 (2)基本数据类型 Symbian OS 开发初级手册 (1) Introduction 利用JavaMail收/发Gmail邮件(SSL) Tapestry4在提交前判断checkbox是否没有一个被选中 - 不明飞行物 - 博客园 恢复windows的引导程序 在页面中插入Windows Media Player播放器 - 不明飞行物 Java中Set的深入研究 - 不明飞行物 - 博客园 Hibernate和Spring的延迟加载和DAO模式 用spring管理hibernate事务时,lzay="true"不能用的解决方法 java中List和Set对象的互换 Tapestry4.0中取得页面request - 不明飞行物 - 博客园 Logout in tapesty4.0 - 不明飞行物 validators里自定义错误信息 - 不明飞行物 - 博客园
Symbian OS 开发初级手册 (7) Descriptors - 不明飞行物
不明飞行物 · 2006-05-28 · via 博客园 - 不明飞行物

本文简介Descriptor。 Symbian OS 中不使用我们所熟悉的c 字符串(char*) 或者c++ 的string。 Symbian 的字符串是通过descriptor实现的。我们的第一个Symbian 程序,文字版Helloworld中是这样使用的: _LIT(KHelloWorldText,"Hello world!n");
console->Printf(KHelloWorldText);
_LIT()是一个宏,它声明了一个descriptor:KHelloWorldText, 其内容是"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"))