在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
中的迭代器冲突?
答案 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次。所以看来你的问题的答案是“不”。