EDA365电子工程师网

标题: [ARM资料] 外部声明 [打印本页]

作者: ygcgsa    时间: 2016-4-28 14:49
标题: [ARM资料] 外部声明
在声明的程序段中,main函数不能访问变量y,因为它是在main函数的后面声明的,通过使用存储类型extern来声明变量,就可以解决这个问题。
main()
{
       externint y;
       ......
}
func1()
{
       externint y;
       ......
}
int y;
尽管变量y声明在两个函数之后,函数中y的外部声明语句告诉编译器,y是一个整数,是在程序的其他地方声明的。注意,extern声明语句并不会给变量分配存储空间。如果要声明数组,在定义语句还应该包括数组的大小。
例如:
main()
{
       inti;
       voidprintf_out(void);
       externfloat height[];
       ......
       printf_out();
}
void printf_out(void)
{
       externfloat height[];
       inti;
       ......
}
float height[size];
函数中的extern关键字知识为本函数提供类型信息。通过把外部声明放在所有函数之前,就可以为所有函数提供类型信息。
例如:
extern float height[main()
{
       inti;
       voidprintf_out(void);
       externfloat height[];
       ......
       printf_out();
}
void printf_out(void)
{
       inti;
       ......
}
float height[size];
定义与声明之间的不同同样可应用于函数。当指定了函数参加和函数体时,也就定义了函数。它告诉编译器,为函数代码分配存储空间,为参数提供类型信息。由于默认情况下函数是外部的,因此声明函数时不需要加修饰符extern。这样,声明语句:
void printf_out(void);
就等价于:
extern void printf_out(void);
位于所有函数之外的函数声明与变量声明作用相同。
作者: ygcgsa    时间: 2016-4-28 14:49

作者: 离远的远离    时间: 2016-5-27 19:39
讲的好




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2