在 C/C++/Objective-C 中,有没有什么方法(例如编译器标志)可以自动设置 ALL 局部变量 const
而无需说明符?就像函数式语言中的 let
语义一样。
因为我想给所有的局部变量都设置const
,但这太烦人了,而且代码可读性差。如果我可以默认设置所有局部变量 const
,并且我可以手动设置一些变量 mutable
,那对我来说会很棒。但我从未听说过。
如果你知道什么请告诉我。
编辑
阅读回复后,我对此进行了更多思考。我强烈同意它会破坏强大的 C 约定(或标准?),因为它已经默认定义为可变的。
所以我的想法正在变成另一种形式。一种静态分析器。不是编译器。 如果某个工具可以检查重新分配的局部变量,并且可以定义任何标记可变变量的机制(例如,一个特定的空预处理器符号),这对我来说将是完美的工具。而且,它不会破坏 C 约定。
所以我稍微更改了问题标题并添加了这段文字。
最佳答案
... 有点像使用宏的错误:
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 分成两个不同的 header ,这样您的代码看起来会更干净一些:
int main () {
#include "all_vars_const_begin.h"
int x = 5;
float y = 5.3;
#include "all_vars_const_end.h"
return 0;
}
但我不确定这种风格是否可以。
关于c++ - 是否有静态分析器可以检查 C/C++/Objective-C 中的局部变量重新分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862844/