C语言 我对内联函数有疑问

vbopmzt1  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(189)

当内联函数被执行时,它们将使用哪个内存区域
int sum(int a,int B){return a+b;}变量a和b存储在哪里?

rhfm7lfc

rhfm7lfc1#

很可能根本不使用内存。如果sum()的参数在“调用”时在寄存器中,那么它们将被简单地相加,并将总和放入另一个寄存器中,或者如果之后不需要内容,则放入其中一个寄存器中。
例如:

inline int sum(int a,int b) {
    return a + b;
}

int main(int argc, char **argv) {
    (void)argv;
    int a = argc;
    int b = a * 5;
    return sum(a, b);
}

编译为:

_main:                                  ; @main
    .cfi_startproc
; %bb.0:
    add w8, w0, w0, lsl #1
    lsl w0, w8, #1
    ret
    .cfi_endproc

都是在寄存器中完成的。内存中没有存储任何内容。(优化器是相加而不是相乘。)

相关问题