gpt4 book ai didi

c++ - 如何处理内联函数体内的函数调用?

转载 作者:行者123 更新时间:2023-11-28 06:29:25 24 4
gpt4 key购买 nike

假设我们有一个头文件:

Header1.h

#include "Header2.h"

class A
{
public:
void Function();
}

inline void A::Function()
{
// Code ...
OtherFunction(); // Function from Header2.h
// Code ...
}

如果编译器实际上选择内联Function调用OtherFunction会发生什么:

  1. 如果 OtherFunction 定义可用于当前翻译单元,它是否也可能内联在 Function 的主体中? (基本上可以使用嵌套内联吗?)
  2. 如果 OtherFunction 定义对于当前翻译单元不可用,它是否仍是一个简单的函数调用,而它周围的代码被内联? (在编译器选择内联 Function 的情况下)

最佳答案

当您在发布配置中构建应用程序时,大多数现代编译器实际上会为您内联函数 - OtherFunction 被声明为内联/正常的效果与编译器决定哪个是内联/正常的效果相同更好的选择。我当然知道这会发生在 MSVC10 及更高版本的编译器 (Visual Studio) 中。事实上,内联任何你想要的,但编译器最终控制内联的内容。

一个例子是,如果你的函数调用以某种方式链接起来,那么在 inline 之后 push 和 pop 操作就没有意义了,你的函数将不会被内联(即使你将它们声明为是内联d)

如果它能让事情变得更简单 - 请参阅:

When to use inline function and when not to use it?

Benefits of inline functions in C++?

更重要的是,How deep do compilers inline functions?

已经有了很好的解释。

关于c++ - 如何处理内联函数体内的函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27878579/

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