请教下extern不同类型同一变量名的问题
//fruit.c
#include "fruit.h"
#include <stdio.h>
int a = 4;
void Print(void)
{
printf("%d", a);
}
//fruit.h
#ifndef _FRUIT_H_
#define _FRUIT_H_
void Print(void);
#endif // _FRUIT_H_
//main.c
#include <stdio.h>
#include "fruit.h"
extern char a;
int main(void)
{
Print();
a = 3;
Print();
return 0;
}
请问下:对于编译器而言,这样是不是未定义,还是进行了牛叉的转换?VC6.0输出:43
[解决办法]
没错,是未定义行为。
事实上,这也是我们要通过头文件进行局部化的主要原因。
[解决办法]
不建议些同名变量,如果有,尽量将不需要暴漏的变量名前加static关键字,让该变量只在所处的文件中可以被访问。