之前写一个代码,出现莫名奇妙的问题,找了半天,结果发现时GCC的BUG
问题:
在一个程序中,
a函数和b函数中定义了相同变量c,
a函数给变量赋值了,b函数没赋值
结果:
在b函数中调用c,其实是调用了a函数的变量c
当发现这个问题时,我也感觉莫名其妙,我猜想时编译器的问题,主要是在变量存储方面
以下是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
fuaction_a(void)
{
int a = 852;
printf("fu_a: %d \n", a);
printf("fu_a address: %ld \n", &a);
return(0);
}
int
fuaction_b(void)
{
int a;
printf("fu_b: %d \n", a);
printf("fu_b address: %ld \n", &a);
return(0);
}
int
main(void)
{
fuaction_a();
fuaction_b();
exit(0);
}
# ./a.out
fu_a: 852
fu_a address: 140735262097260
fu_b: 852
fu_b address: 140735262097260