如何创建易失性结构函数指针的固定数组



如何创建一个数组的volatile结构?每个结构体包含3个函数指针。

。这是

State_t * volatile states[10];

volatile State_t * states[10];

? ?

同样,结构体属性也应该定义为volatile吗?

这是为了确保编译器不会清除函数指针。代码工作良好时,与GCC编译。然而,数组中的第二个条目返回的是用Cortex-M3的ARM编译器编译的垃圾。

State_t *volatile states[10];

上面的意思是states是一个指向State_t类型对象的10 volatile指针的数组。这里的volatile关键字限定了指针,而不是指向的值。

State_t volatile *states[10];

上面的意思是states是一个指向volatile State_t类型对象的10指针数组。这里,volatile关键字限定的不是指针,而是指向的值。以上内容也可以写成

volatile State_t *states[10];

回答你问题的后半部分,如果你限定一个结构变量为volatile,那么它的所有成员都是volatile。然而,volatile限定不是结构定义的一部分。

volatile struct states {
    // stuff
} state_a;
struct states state_b;

这里,state_a符合volatile条件,但state_b不符合。因此,需要显式地将每个states实例限定为volatile,除非在与结构定义相同的语句中创建states实例。

最新更新