在实时嵌入式设备的实现中,我为每个通道都有一个状态寄存器变量(让我们盲目地假设我的嵌入式设备有多个通道,并且必须为每个通道完成一些工作)。
所以这里是如何声明状态变量:
struct channel_status status[NCHANNELS];
性能问题,最好使用中间全局变量,该变量是所选通道的status
变量的副本。
示例:
struct channel_status status_shadow;
void some_work() {
for(channel = 0; channel < NCHANNELS; channel++) {
status_shadow = status[channel];
foo(); // Function that use the status_shadow as global
bar(); // "
baz(); // "
status[channel] = status_shadow;
}
我是不是在讨论实现既不可能使用指针而不是变量。我的问题与中间变量的名称有关。
我之所以选择status_shadow
是因为我认为我正在做某种shadowing。
此类中间变量是否有更好/更准确的技术名称?
我之所以决定使用这个中间变量的原因是因为将信道指针i
或状态变量传递给每个函数foo
,bar
,资源消耗太大, baz
,...在性能方面,避免堆栈推送/弹出可以节省实时应用程序的宝贵时间。
答案 0 :(得分:3)
你在技术上不是影子;你必须定义一个相同的名称的变量来遮蔽它。此外,阴影通常是不受欢迎的,因为粗心使用可能会导致容易混淆。
您正在做的是为您的周期选择当前项,因此适合的名称可以是current_status
或cur_status
。如果您将其用作参数,那么名称只会包含在for()
中,也可能是current
或cur_item
。
另一个想法可能是temp_channel_status
,暗示虽然变量是全局的,但不应将该值视为固定值。
答案 1 :(得分:0)
您可以使用status_local
或status_local_copy
。
答案 2 :(得分:0)
我想要一个名称,例如work_status
或status_copy
。