【发布时间】:2013-10-04 19:55:19
【问题描述】:
我在我的嵌入式固件中使用了很多 volatile 变量,但大多数时候,函数中只有一个点我需要确保值是最近的(在开始时)。但是该函数的其余部分引用了相同的变量名,并且值可以同时更改,从而产生非常意外的代码流/结果。我知道这可以通过在函数中使用临时变量来解决,但我一直在寻找更好的解决方案。
现在我想知道,不是将整个变量标记为volatile,而是有一种方法可以使用特殊关键字指示编译器(gcc),我想读取变量,就好像它被标记为易失性一样,所以我只能在函数开头使用该关键字一次?
【问题讨论】:
-
解决方案在什么方面比使用临时变量更好?这似乎是显而易见的完美解决方案。
-
@DavidSchwartz 我必须修改每个使用这些易失性变量的函数以在函数开始时“缓存”它,并确保所有代码都引用临时变量而不是真实变量.如果我可以完全删除 'volatile' 关键字,我所要做的就是找到实际需要 volatile 读取的位置,而不是相反。
-
保留访问权限。更改 volatile 变量的名称。
-
请举个例子。
-
我不确定是否可以将编译器特定扩展的使用解释为“更好的解决方案”,最好(并且完全足够)的解决方案就是您拥有的解决方案。
标签: c gcc embedded c99 volatile