在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?有没有办法改变范围?
感谢。
答案 0 :(得分:1)
完整语法是:
__declspec(allocate("segname")) declarator
因此它仅适用于以下声明,在您的情况下,只有g_pROData
受影响并在名为.readonly
的段中分配。如果需要在该段中分配多一个变量,则必须为每个变量重复声明。
答案 1 :(得分:0)
__declspec
总是直接耦合到它之前的“对象”。
但是,您确定要使用只读的void *
吗?究竟什么是好的,你甚至无法将指针指向某个东西。你的意思是你希望你的指针指向只读部分吗?或者至少是初始化,例如VOID* g_pROData = ...