变量声明位置的编译器优化

Kir*_*han -2 c++ compiler-optimization

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

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

Jam*_*nze 5

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