给定以下全局(或静态局部)变量的定义:
static const <type>* const ptr = {&var1, &var2, ...};
,我可以依赖这样一个事实,即初始化列表中的ptr和data都将被放置到生成的目标文件的单独只读部分(即它不会被放置到 .data 或包含非常量变量的类似部分)?
问题仅与所有架构/平台(至少其中存在只读内存的那些)共有的gcc c/c++ 编译器行为有关。它并不意味着任何平台、处理器、操作系统、链接器、启动运行时、库等。
请不要问我要做什么。我知道我在做什么。如果我提供的信息不足以回答,则必须将问题视为特定于 xxx 的问题,通用答案为“否”。我已经阅读了非常接近地提到这个主题的问答:
类型限定符对存储位置的影响
C 中如何实现只读内存?
“const”只是意味着只读还是更多?
为什么编译器允许你在这里“写”一个 const 变量?
GCC C++ (ARM) 和指向结构字段
memcpy 的 const 指针以及指向 const 数据的目标指针
但我没有找到确定和直接的答案。