【发布时间】:2012-08-08 10:45:04
【问题描述】:
有没有什么方法(例如编译器标志)可以在没有 C/C++/Objective-C 中的说明符的情况下自动设置 ALL 局部变量 const?就像函数式语言中的 let 语义一样。
因为我想将const 设置为所有局部变量,但这太烦人了,并且使代码的可读性降低。如果我可以默认设置所有局部变量const,并且我可以手动设置一些变量mutable,那对我来说会很棒。但我从来没有听说过。
如果你知道什么,请告诉我。
编辑
在阅读回复后,我对此进行了更多思考。而且我强烈同意它会破坏强大的 C 约定(或标准?),因为它已经被默认定义为可变的。
所以我的想法变成了另一种形式。一种静态分析器。不是编译器。 如果某些工具可以检查重新分配的局部变量,并且可以定义任何标记可变变量的机制(例如,特定的空预处理器符号),那么它对我来说将是完美的工具。而且,它不会破坏 C 约定。
所以我稍微更改了问题标题并添加了这段文字。
【问题讨论】:
-
出于好奇 - 为什么需要它?你赢什么?另外,我看不出这如何使代码更具可读性,隐藏了
const。 -
这不会给你带来很多麻烦吗,比如循环计数器?
-
想象一下偶尔的读者看到你的程序会有多么有趣:)
-
“因为我想把所有局部变量都设置成 const,但是太烦人了,代码可读性差。” - 这可能很烦人。但是,它是如何降低代码的可读性的呢?当您添加明确的“const”关键字时,代码似乎更具可读性。
-
@Eonil - 如果现在从头开始,这可能是语言 将 的设计方式,默认为 const 并在明确要求时为 mutable/var。但这并没有发生,所以答案是 - 不,我知道没有编译器支持。
标签: c++ objective-c c constants local-variables