内联函数中的变量可以与局部变量冲突吗?
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
说明符大多只是对编译器的提示。它不会使功能有任何不同。函数中声明的变量仍然具有块作用域,不会干扰其他变量。
在 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
说明符大多只是对编译器的提示。它不会使功能有任何不同。函数中声明的变量仍然具有块作用域,不会干扰其他变量。