在没有C / C ++ / Objective-C中的说明符的情况下,是否有任何方法(例如编译器标志)自动设置 ALL 局部变量const
?就像函数式语言中的let
语义一样。
因为我想将const
设置为所有局部变量,但它太烦人并且使代码的可读性降低。如果我可以默认设置所有局部变量const
,并且我可以手动设置一些变量mutable
,那对我来说会很棒。但我从来没有听说过。
如果您有所了解,请告诉我。
修改
在阅读回复后我想到了更多。我非常同意它会破坏强大的C约定(或标准?),因为它已被默认定义为可变。
所以我的想法正在变成另一种形式。一种静态分析仪。不是编译器。 如果某个工具可以检查重新分配的局部变量,并且可以定义标记可变变量的任何机制(例如,特定的空预处理器符号),那么它对我来说将是完美的工具。而且,它不会破坏C约定。
所以我稍微更改了问题标题并添加了这个文字。
答案 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;
}
但我不确定这种风格是否合适。