在实时嵌入式设备的实现中,我为每个通道都设置了一个状态寄存器变量(让我们盲目地假设我的嵌入式设备有多个通道,并且必须为每个通道完成一些工作)。
下面是当前声明状态变量的方式: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
,因为我认为我在做某种阴影。
对于这种中间变量是否有一个更好/更准确的技术名称?
实现注意事项:
我决定使用这个中间变量的原因是因为将通道指针i
或状态变量传递给每个函数foo
, bar
, baz
,…在性能方面,避免堆栈推送/弹出可以节省实时应用程序的一些宝贵时间。
从技术上讲,你不是在跟踪;您必须定义一个具有相同名称的变量来遮蔽它。此外,阴影通常是不受欢迎的,因为不小心使用可能会导致容易混淆。
您正在做的是为您的周期取当前项目,因此合适的名称可以是current_status
或cur_status
。如果您使用它作为参数,那么名称将只包含在for()
中,它也可以是current
或cur_item
。
另一个想法可以是temp_channel_status
,这意味着值不被认为是固定的,尽管变量是全局的。
我想要一个名称,如work_status
或status_copy
。
您可以使用status_local
或status_local_copy
。