gpt4 book ai didi

c - 如何创建 volatile 结构函数指针的固定数组

转载 作者:行者123 更新时间:2023-11-30 15:36:50 44 4
gpt4 key购买 nike

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

即是吗

State_t * volatile states[10];

volatile State_t * states[10];

??

此外,结构体属性也应该定义为 volatile 吗?

这是为了确保函数指针不会被编译器清除。使用 GCC 编译时代码可以正常工作。但是,数组中的第二个条目返回使用 Cortex-M3 的 ARM 编译器编译的垃圾。

最佳答案

State_t *volatile states[10];

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

State_t volatile *states[10];

上面的意思是states是一个由10个指针组成的数组,指向 volatile State_t类型的对象。这里,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 实例。

关于c - 如何创建 volatile 结构函数指针的固定数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436019/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com