【发布时间】:2017-02-09 12:27:29
【问题描述】:
引用是像通常的指针一样编译还是后面有其他东西?
clang 有什么不同?
【问题讨论】:
-
为什么不做一个简单的测试程序,用不同的编译器编译,看看生成的代码?
-
复杂情况下会有所不同
-
有时它甚至不需要存在于生成的代码中,因为编译器可以将其视为引用项的别名。
-
没有单一的固定方式,取决于具体情况和优化器。想一想,可能更准确的答案是,机器代码级别的引用不存在,所以没有必要问它是如何翻译成它的。引用是 C 级的东西,它可能是,编译的几个内部步骤可以识别为“引用”,但是当生成最终的机器代码时,不再需要这些信息,并且很可能丢失/损坏在编译 + 优化的最后一步中。