gpt4 book ai didi

c - (如何)我可以内联一个特定的函数调用吗?

转载 作者:太空狗 更新时间:2023-10-29 16:24:50 25 4
gpt4 key购买 nike

假设我有一个函数在程序的多个部分被调用。还假设我在对性能极其敏感的代码部分(例如,迭代数千万次且每一微秒都很重要的循环)中对该函数进行了特定调用。有没有一种方法可以强制编译器(在我的例子中是 gcc)内联那个单一的、特定的函数调用,而不内联其他函数调用?

编辑:让我说清楚:这个问题不是关于强制 gcc(或任何其他编译器)内联所有对函数的调用;相反,它是关于请求编译器将特定调用内联到一个函数。

最佳答案

在 C(与 C++ 相对)中,没有标准的方法来建议应该内联函数。它只是特定于供应商的扩展。

无论您如何指定它,据我所知,编译器总是会尝试内联每个实例,因此只使用该函数一次:

原创:

   int MyFunc()  { /* do stuff */  }

更改为:

   inline int MyFunc_inlined()  { /* do stuff */  }

int MyFunc() { return MyFunc_inlined(); }

现在,在你想要内联的地方,使用 MyFunc_inlined()

注意:上面的“inline”关键字只是 gcc 用于强制内联的任何语法的占位符。如果要信任 H2CO3 的已删除答案,那将是:

static inline __attribute__((always_inline)) int MyFunc_inlined()  { /* do stuff */  }

关于c - (如何)我可以内联一个特定的函数调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571593/

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