我有一个结构数组。
typedef struct { int a; int b } s;
typedef struct { int a; int b; } s;
static const s info[2] = {
{.a=1, .b=2}, {.a=3, .b=4 }};
我也有一个指向这种结构的指针:
static s *thisInfo;
我想设置
thisInfo
指向数组 info
的一个元素。 这是在嵌入式处理器上,我希望 s
为 const
,以便它保留在闪存中。
thisInfo = &info[0];
但是会收到消息“警告:赋值从指针目标类型 [-Wdiscarded-qualifiers] 中丢弃'const'限定符”
由于
info
的元素属于 const s
类型,因此指向此类元素的指针应该属于 const s*
类型。 所以你应该声明
static const s *thisInfo;`
注意这并不意味着
thisInfo
本身是 const;您仍然可以自由修改指针。 但你不能修改它指向的对象。
thisInfo = &info[0]; // ok
thisInfo = &info[1]; // ok
thisInfo->a = 0; ; // error