gpt4 book ai didi

c++ - 什么时候执行内联函数体的替换

转载 作者:行者123 更新时间:2023-11-30 02:46:24 25 4
gpt4 key购买 nike

我正在尝试使用内联函数进行实验。我认为函数体的替换是在预处理时执行的。但事实并非如此。如果我们声明内联函数如下

//--main.cpp--//
....
inline void bar();
....

然后运行 ​​g++ -E main.cpp 然后我们可以看到没有变化的内联函数。那么代入体函数什么时候执行呢?

最佳答案

函数内联 是一种编译时操作。注意,inline 不是命令,它是对编译器的请求,编译器可以随意忽略它。例如,大型方法、递归方法、包含循环的方法或其他方法调用通常不是 inlined。当编译器执行内联时,它用方法体替换方法调用,有点类似宏扩展,但这个过程更复杂。编译器不会像宏那样盲目地替换方法调用,它必须处理方法的参数。

按照标准

A function declaration (8.3.5, 9.3, 11.4) with an inline specifier declares an inline function. The 
inline specifier indicates to the implementation that inline substitution of the function body at the
point of call is to be preferred to the usual function call mechanism. An implementation is not required
to perform this inline substitution at the point of call;

关于c++ - 什么时候执行内联函数体的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com