__declspec分配的范围

时间:2014-05-01 21:22:36

标签: c++ visual-c++

在C ++中,我感兴趣的是将指针变量声明为只读,我正在考虑通过以下机制来实现:

#pragma section (".readonly", read)
__declspec(allocate(".readonly"))
VOID* g_pROData; // I want this to be read-only

VOID* g_pRWData; // I want this to be read-write

但是,我不确定__declspec语句的范围。它只包含g_pROdata,还是包含g_pRWData?有没有办法改变范围?

感谢。

2 个答案:

答案 0 :(得分:1)

完整语法是:

 __declspec(allocate("segname")) declarator

因此它仅适用于以下声明,在您的情况下,只有g_pROData 受影响并在名为.readonly的段中分配。如果需要在该段中分配多一个变量,则必须为每个变量重复声明。

答案 1 :(得分:0)

__declspec总是直接耦合到它之前的“对象”。

但是,您确定要使用只读的void *吗?究竟什么是好的,你甚至无法将指针指向某个东西。你的意思是你希望你的指针指向只读部分吗?或者至少是初始化,例如VOID* g_pROData = ...