是否有静态分析器可以在C / C ++ / Objective-C中检查局部变量的重新分配?

时间:2012-08-08 10:45:05

标签: c++ objective-c c const local-variables

在没有C / C ++ / Objective-C中的说明符的情况下,是否有任何方法(例如编译器标志)自动设置 ALL 局部变量const?就像函数式语言中的let语义一样。

因为我想将const设置为所有局部变量,但它太烦人并且使代码的可读性降低。如果我可以默认设置所有局部变量const,并且我可以手动设置一些变量mutable,那对我来说会很棒。但我从来没有听说过。

如果您有所了解,请告诉我。


修改

在阅读回复后我想到了更多。我非常同意它会破坏强大的C约定(或标准?),因为它已被默认定义为可变。

所以我的想法正在变成另一种形式。一种静态分析仪。不是编译器。 如果某个工具可以检查重新分配的局部变量,并且可以定义标记可变变量的任何机制(例如,特定的空预处理器符号),那么它对我来说将是完美的工具。而且,它不会破坏C约定。

所以我稍微更改了问题标题并添加了这个文字。

1 个答案:

答案 0 :(得分:1)

...错误地使用宏:

int main () {

 #define int const int
 #define float const float

 int x = 5;
 float y = 5.3;

 #undef int
 #undef float

 return 0;
}

你甚至可以将这些def和undef分成两个不同的标题,这样你的代码看起来会更清晰:

int main () {

 #include "all_vars_const_begin.h"

 int x = 5;
 float y = 5.3;

 #include "all_vars_const_end.h"

 return 0;
}

但我不确定这种风格是否合适。