×
Namespaces

Variants
Actions

可写静态数据

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
kcomex 在 01 Apr 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

Contents

可写静态数据

全局可写静态数据(Global Writeable Static Data,WSD)是一类在变量生命周期之前就进行了预处理的变量。有时候我们需要WSD用来供多个不同文件来访问和修改。这种情况时常发生在将Symbian操作系统之外的项目移植到Symbian系统中来的时候。

EKA1平台下的WSD

在 EPOC内核版本1 (EKA1,EPOC_Kernel_Architecture_1)中(使用于Symbian系统版本6.1, 7.0, 7.0s, 8.0a, 8.1a的内核),仅仅在EXE类型的程序中支持WSD。我们无法在DLL和APP中使用WSD,如果我们进行了这样的定义,编译器会报告"初始化数据"错误信息。

在EKA1中,我们如果要使用WSD的话,还是有一些解决办法的:

  • 使用本地线程存储(TLS,Thread Local Storage),更多详情参考 <系统常见问题和技术窍门>。
  • 将全局变量变成类成员变量,只不过这种方法需要增加很多额外劳动,尤其是在WSD在很多不同地方被很多次的使用的情况下。
  • 使用ECompXL。尽管ECompXL是被用来压缩Symbian系统的可执行程序文件的,但是他的一个"副作用"可以让开发者把它用来当作WSD使用。


EKA2平台下的WSD

EPOC内核版本2(EKA2,EPOC_Kernel_Architecture_2)中(使用于Symbian系统版本8.0b, 8.1b及其版本9以后的内核),不仅仅EXE支持使用WSD,DLL也同样支持了WSD。不过尽管如此,在DLL中使用WSD仍然需要作一些小的修改,我们需要在MMP文件中添加如下宏定义:

EPOCALLOWDLLDATA


参考

This page was last modified on 15 December 2011, at 13:37.
46 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×