我知道 C99 之前的编译器需要在函数开头声明变量来计算堆栈大小。然后要求就被取消了。如今,除了向后兼容性之外,仍然坚持该方案是否有任何好处,或者也许仅在需要变量时以及在更需要变量的地方才声明变量?(例如,在 if 语句中,其中一个分支需要变量,但第二个分支不需要)
答案是不。在函数开头声明标识符不会带来编译或其他计算方面的好处。
优秀的现代编译器会分析代码中值的使用位置,因此只要不影响语义(例如将声明移动到复合语句中,缩小其范围),声明的位置就无关紧要。
在某些情况下,在函数或块的开头告诉人类读者您将要做什么可能会有好处。一般来说,在需要的地方声明标识符是有益的,因为这往往会减少读者一次必须考虑的事情的数量。但是,如果函数要执行的算法有某种模式或韵律和原因,那么在开始时展示其某些方面可以帮助读者理解它。