-2

我从C++ 常见问题解答中读到“应在首次使用时声明本地变量”。此外,出于性能原因,Scott Meyer 的 Effective C++ Item 26 也建议使用它。但我最近碰巧听到有人说编译器足够聪明,可以优化定义变量的地方,而不管它们在函数中实际使用的范围如何。他建议在函数顶部声明变量以便于理解(虽然我不相信这个原因)。他对编译器优化是否正确?

(问题是关于性能和编译器优化。不是代码可读性)。

4

4 回答 4

5

编译器与它无关。关于定义变量(本地或其他)有两个一般规则:保持范围和可见性尽可能小,如果可能,在定义中进行初始化。这些规则适用于人类读者,而不是编译器。作为推论,两者都确实导致“宣布当地人接近他们的第一次使用”。

于 2012-09-27T09:30:54.337 回答
2

是的,他们足够聪明。

但也有一个软件技术答案:你应该这样做,因为它是一种更好的编程风格。

于 2012-09-27T09:29:23.090 回答
0

将变量声明放在使用变量的位置附近会增加局部性,并且可以使代码和程序流程更易于理解。此外,如果一个变量被放置在一个嵌套的范围内,那么它会在离开它声明的范围时被“破坏”,这有助于处理 RAII 之类的事情。

于 2012-09-27T09:29:55.727 回答
0

您应该始终努力编写易于阅读和理解的源代码。

即使编译器能够对此进行优化,这样做仍然是一个好习惯。它为您提供了改进的可读性,您无需缓存并记住变量在块开始时初始化的值。

于 2012-09-27T09:30:58.243 回答