在早期C中开始声明所有范围本地的编译含义?

4 c c++ instantiation locals compiler-optimization

我记得听说在块的开头排列所有范围成员不再推荐使用C和C++,但这是否意味着它在生成代码时会以某种方式阻碍编译器,或者只是不再需要这样做,因为它并不总是方便吗?如果本地化是按需声明的话,AKA是否更有效地使编译器生成最佳分配?

Mag*_*off 5

过去必须在C语言中预先声明本地语言,大概是因为在这种情况下更容易实现编译器.

目前,编译器实际上"足够先进",这对POD类型没有任何影响.因此,问题归结为C语言的可读性和品味问题.


但是,在C++中,声明locals意味着相关构造函数和析构函数的执行,它可能会影响编译器是否能够使用某些优化.这意味着将它们全部声明为顶部并不等同于按需声明它们,使得您的问题对于C++而言大多无效.

在C++中,声明变量,因为它对于您尝试编写的程序在语义上是正确的.(除此之外,还有可读性和品味的问题)