本人看TQ2440开发板的u-boot程序,发现void nand_init_ll(void)函数,也就是NAND FLASH初始化函数,发现该函数内部有一个结构体被初始化并且赋值如下图所示:
但是在该函数内部调用了另一个函数nand_reset();而nand_reset()经过两次调用后有四个函数,如下图所示:
这4个函数均有如下语句:
于是产生疑问:难道函数内部的子函数重新定义不会报错,假如不报错,那么函数外部定义的变量函数内部可不可见?
接下来我用VC++6.0进行测试:
#include <stdio.h>
#include <conio.h>
typedef struct
{
int a;
} student;
void fun(void)
{
int i;
student *student1 = (student *)0x4e000000;
i = 4;
}
int main(void)
{
int i = 0;
//student *student1 = (student *)0x4e000000;
student *student1 = (student *)0x4e000000;
fun();
printf("i=%d",i);
getch();
}
以上代码没有出现报错,运行后终端显示 i=0,故为主函数里面的值,断定子函数里面的作用域仅限于子函数内部,对外部不可见。