我有一个私有函数,可以对静态局部变量进行操作。该函数由不同的非并发硬件 ISR 调用。本能地,我相信这是正确的,因为变量是静态的,并且它的值必须在函数调用之间持续存在,但我希望 100% 确定。
/** @brief Raise the event flag and feed the watchdog if all required event flags are set.
*
* @param[in] event_flag Bitmask corresponding to the triggering event.
*/
static void watchdog_feed_if_all_events_set(watchdog_event_t event_flag)
{
static watchdog_event_t watchdog_feed_events;
watchdog_feed_events |= event_flag;
if ((watchdog_feed_events & watchdog_required_events) == watchdog_required_events) {
bsp_watchdog_feed();
watchdog_feed_events = 0;
}
}
watchdog_feed_events
是否需要声明为易失性?如果是这样,你能解释一下为什么吗?
watchdog_feed_events 需要声明为 volatile 吗?如果是这样, 你能解释一下为什么吗?
如果满足以下条件,它不必是易失性的: