我是C ++的新手,谁能解释在编译的哪个阶段内联函数会得到详细扩展?
答案 0 :(得分:2)
当您说“内联”时,您可能在谈论两种不同的事情。
在c ++中,链接器使用inline
关键字。可以找到很好的解释here。
您还可以谈论编译器优化和函数内联。函数内联由优化程序完成,因此很难确切地说出它何时发生。内联函数的决定可能会受目标体系结构及其高速缓存大小以及许多其他因素的影响。一般来说,我想您可以说函数内联是在优化过程中完成的。
答案 1 :(得分:0)
最理想的是在优化阶段,因为与其他优化路径有很好的协同作用。
例如,常量传播。您可能会推断您的函数是使用特定值而不是任意参数调用的。在函数内部传播这个值可能会简化它的主体,变得足够紧凑以有资格进行内联。
这种组合方法是获得零成本抽象的关键。