作为一项安全检查,我希望不时检查变量v
是否未在代码的某些部分或某些函数的其余部分中使用,即使它仍然可见这个函数的范围/代码的一部分。例如:
int x;
// do something with x
DEACTIVATE(x);
// a portion of code which should not use x
ACTIVATE(x);
// do something else with x
是否有一种在编译时执行此类验证的好方法?
注意:我知道应该总是使用每个变量尽可能小的范围,但是有些情况下将这种做法推向极端会变得很麻烦,而且这样的工具会很有用。
谢谢!
答案 0 :(得分:3)
实现这一目标的最佳方法是在代码中实际使用小范围,即使用只做一件事的简短,专注的方法。这样,每个单独的方法往往只有很少的局部变量,一旦你不需要它们就会自动超出范围。
如果你有很长的遗留方法让你担心这个问题,那么最好的长期解决方案是通过将更小的功能块提取到不同的方法来重构它们。大多数现代IDE都具有自动重构支持,可以降低引入此类更改的bug的风险 - 尽管最好的是拥有一套适当的单元测试,以确保您不会破坏任何内容。
推荐阅读为Clean Code。
答案 1 :(得分:1)
使用
#define v @
..
#undef v
这应该这样做,因为@
与任何其他变量名称或关键字或运算符冲突的概率非常低。
答案 2 :(得分:0)
据我所知,没有这样的编译验证。也许你可以使用grep自己验证它。我认为最好的方法是将您的功能分成两个功能。一个使用变量,另一个不能看到变量。这就是我们需要功能的原因之一。