内联函数中的变量可以与局部变量冲突吗?

Can variables in inline functions conflict with local variables?

在 C 中,内联函数的局部变量是否会与调用它的函数中的局部变量冲突?例如:

inline void func1() {
    int i;
    for(i = 0; i < 10; i++){
        // Some code
    }
}

void func2() {
    int i;
    for(i = 0; i < 5; i++) {
        func1();
    }
}

func1中的迭代器会不会与func2中的迭代器冲突?

我已经编译了这个简单的测试程序:

#include <stdio.h>

static inline void func1()
{
    int i;
    for (i = 0; i < 10; i++) {
        printf("i from func1(): %d\n", i);
    }
}

static void func2()
{
    int i;
    for (i = 0; i < 5; i++) {
        func1();
    }
}

int main(int argc, char *argv[])
{
    func2();
}

在编译和 运行 之后,我看到以下输出:

i from func1(): 0
i from func1(): 1
i from func1(): 2
i from func1(): 3
i from func1(): 4
i from func1(): 5
i from func1(): 6
i from func1(): 7
i from func1(): 8
i from func1(): 9

重复5次。所以看起来你的问题的答案是 "no."

inline 说明符大多只是对编译器的提示。它不会使功能有任何不同。函数中声明的变量仍然具有块作用域,不会干扰其他变量。