gpt4 book ai didi

c - 在 C 中调用其他较大函数的函数使用静态内联

转载 作者:行者123 更新时间:2023-12-01 23:21:59 24 4
gpt4 key购买 nike

假设我有一个函数,

static inline int res( int x )
{
/** total() is a large func */
int processedPkts = total();
return ( processedPkts + x);
}

int total()
{
/** Where the function total() does lot of processing,counting no of packets
or say, it has many lines of code */
}

所以,我的问题是,我可以为 res() 使用静态内联吗?哪个函数又调用更大的函数?

根据我对为什么/何时使用内联的理解,

it encourages the compiler to build the function into the code where it is used (generally with the goal of improving execution speed).

static inline is usually used with small functions that are better done in the calling routine than by using a call mechanism, simply because they are so short and fast that actually doing them is better than calling a separate copy.

因此,在汇编级别,total()函数不受静态内联影响(使用常规调用机制),因此建议对 res() 使用静态内联?

最佳答案

没关系。函数 total 可能不会被内联(将发出正常的函数调用)。函数 res 可能会被内联。

为什么可能。因为 inline 关键字只是一个建议。没有内联的函数也可以内联。编译器也可以内联 total 函数,如果它决定在一定的优化级别上它会产生最好的代码生成。

许多编译器都有特殊的扩展,可以让您控制内联。例如:

gcc 有 __attribute__((noinline))__attribute__((always_inline))

iar #pragma inline=neverpragma inline=force

关于c - 在 C 中调用其他较大函数的函数使用静态内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67967657/

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