程序世界

--专注C++ --MSN:tszhao10@hotmail.com

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  0 Posts :: 4 Stories :: 0 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新评论

在VC中,可能需要在同一个.exe或DLL的多个实例之间共享变量,我们可以通过把需要共享的数据放到一个单独的段中即可。创建新段的方法如下:

#pragma data_seg("sectionname")
#pragma data_seg()

其中,sectionname为你想要创建的段名。注意,该段中只能存放已经进行了初始化的变量,对于未初始化的变量,编译器就会将该变量放到sectionname段之外,但是,allocate声明符可以允许我们将未初始化的数据放到想要的段中。代码如下:

#pragma data_seg("Shared")

//初始化的放在Shared段中
int a = 0;
//未初始化的没有放在Shared段中
int b;

#pragma data_seg()

//初始化的放在Shared段中
__declspec(allocate("Shared")) int c=0;
//未初始化的也放在Shared段中
__declspec(allocate("Shared")) int d;

//以下内容不放在Shared段中,放在默认的地方。
int e = 0;
int f;

注意:在使用allocate声明符的时候,必须已经创建对应的段,如上面所示的Shared段。
如果要共享变量,还必须告诉链接器要共享这个段中的变量。可以通过在链接器中的命令行中使用/SECTION开关来实现:

/SECTION:name,attributes

比如上例所示的Shared段,应按如下所示:

/SECTION:Shared,RWS

其中的R表示READ,W表示WRITE,S表示SHARED,E表示EXECUTE。如果想要改变多个段的属性,必须使用多个/SECTION开关。一个开关对应一个段。
也可以直接把链接器开关嵌入到源代码中:

#pragma comment(linker, "/SECTION:Shared,RWS")






 

posted on 2011-05-23 09:29 tszhao 阅读(273) 评论(0)  编辑 收藏 引用 所属分类: SDK

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理