sgo*_*les 2 c++ inline-functions object-address
伙计们,
我正在阅读" 用C++思考"(Chap - Inline函数),在那里我遇到了这个语句.
"如果隐式或明确地采用函数的地址,编译器也无法执行内联".
这是什么意思" taking address of function implicitly or explicitly"?
为什么在这种情况下无法内联?
谢谢.
获取函数的地址意味着将其分配给函数指针.这可以明确地发生,如在链接的示例中那样.我不确定作者的意思是"暗中" - 也许是将函数作为参数传递给另一个函数.
如果采用该函数的地址,则它必须首先具有地址.由于内联意味着基本上用对其主体的副本替换对函数的调用,在这样的转换之后函数不再存在,因此没有地址 - 在过去曾经调用该函数的地方只有n个相同代码的不同副本.因此,如果以任何方式使用函数的地址,则无法内联.