gpt4 book ai didi

c - 内联函数,指向变量的指针

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

我试图了解 inline 关键字如何与变量指针一起使用。

考虑以下示例:

struct S
{
float a;
float b;
};

inline void foo (struct S *s)
{
s->a = 5;
}

void main()
{
struct S ss;
foo(&ss);
}

当编译器内联函数foo时,会生成

void main()
{
struct S ss;
(&ss)->a = 5;
}

或者会生成

void main()
{
struct S ss;
ss.a = 5;
}

换句话说,代码是否需要取消对结构体指针的引用,还是需要将其替换为结构体?

在嵌入式应用程序中,这会对运行时产生重大影响。

最佳答案

编译器只需生成能够实现语言语义所需结果的代码。特定编译器如何实现这一点完全取决于实现。甚至有可能代码根本不会内联。

要确定您的特定编译器将如何翻译此代码,您可以指示它输出生成的代码的汇编列表,或在调试器中检查代码反汇编。根据编译器选项(例如优化级别)的不同,生成的代码也可能有很大不同。

关于c - 内联函数,指向变量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075125/

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