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

时间:2016-03-17 15:52:36

标签: c inline

在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中的迭代器冲突?

2 个答案:

答案 0 :(得分:4)

{ name: ‘testProduct1’, colors: [ ‘RED’, ‘YELLOW’ ], locations: [ ‘New York’, ‘London’ ] }, { name: ‘testProduct2’, colors: [ ‘WHITE’ ], locations: [ ‘New York’, ‘London’ ] }, { name: ‘testProduct3’, } 说明符主要只是编译器的提示。它没有使功能有任何不同。函数中声明的变量仍然具有块范围,不会干扰其他变量。

答案 1 :(得分:-5)

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

#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次。所以看来你的问题的答案是“不”。

相关问题