【发布时间】:2022-11-23 20:51:27
【问题描述】:
我喜欢在我的代码中创建场景,我在每个人都将共享的 .c 文件中声明一个静态全局结构,它包含配置内容。在声明的正下方,我将创建一个指向此结构的常量指针并将其放入 .h 文件中,以便每个人都可以访问它。
有时,在 .c 文件中,我喜欢有一个全局指针指向该 .c 文件关心的特定配置,这样我就不会一直引用全局结构,因为有时我会从中获取此配置不同项目的不同来源。
我遇到的问题是我无法定义这个“局部全局”指针,因为初始化元素不是常量。这是一个例子。
typedef struct
{
int Value;
} mystruct_t, *pmystruct_t;
static const mystruct_t GlobalStruct;
const pmystruct_t pGlobalStruct = &GlobalStruct;
const int *ValuePtr = &pGlobalStruct->Value;
int main()
{
*ValuePtr = 10;
return 0;
}
我尝试阅读 C 中指针的 const 关键字,我想我理解了它,但显然它对我来说仍然是个谜。我试过的代码行,可能让我更接近那段要编译的代码是
const mystruct_t const *pGlobalStruct = &GlobalStruct;
但是,它仍然无法编译,因为 ValuePtr 初始值设定项元素不是常量(我得到的错误)。
这里的最终目标是让 ValuePtr 成为一个常量,没有人可以更改它指向的位置,但允许更改它指向的结构的元素。
编辑:我希望 ValuePtr 使用 pGlobalStruct
【问题讨论】:
标签: c pointers struct constants