【发布时间】:2013-12-18 23:35:22
【问题描述】:
我记得听说在 C 和 C++ 中不再推荐在块的开头排列所有范围成员的做法,但这是否意味着它在生成代码时会以某种方式阻碍编译器,或者只是说它不是再有必要这样做,因为它并不总是方便? A.K.A 如果按需声明局部变量,编译器生成最优分配是否更有效?
【问题讨论】:
-
在 C++ 中,为有条件未使用的变量调用构造函数可能效率低下。在 C 语言中,我怀疑它是否会产生很大的实际差异,因为编译器可以判断地址是否取自变量,以及函数的哪些部分使用哪些变量。寄存器分配器/堆栈布局优化可以在可能的情况下重用插槽。但是,您可能会遇到一场关于它是否有助于在特定地方定义当地人的可读性的圣战。
-
我不同意这个问题“主要基于意见”。他本可以问“我应该在哪里声明我的本地人?”,这将是基于意见的,但他问的是“我在哪里声明我的本地人对编译有何影响?”这是一个可以明确回答的问题。
标签: c++ c instantiation compiler-optimization locals