读书人

请问上extern不同类型同一变量名的有关

发布时间: 2012-09-24 13:49:41 作者: rapoo

请教下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关键字,让该变量只在所处的文件中可以被访问。

读书人网 >C语言

热点推荐