谁能告诉我使用有什么特殊要求吗EXTERN
or GLOBAL
C 程序中的变量?
如果我从 gloabl 更改为 extern,我看不出像下面这样的程序有任何区别。
#include <stdio.h>
#include <stdlib.h>
int myGlobalvar = 10;
int main(int argc, char *argv[])
{
int myFunc(int);
int i;
i = 12;
myGlobalvar = 100;
printf("Value of myGlobalvar is %d , i = %d\n", myGlobalvar, i);
i = myFunc(10);
printf("Value of passed value : %d\n",i);
printf("again Value of myGlobalvar is %d , i = %d\n", myGlobalvar, i);
system("PAUSE");
return 0;
}
int myFunc(int i)
{
i = 20 + 1000;
//extern int myGlobalvar;
myGlobalvar = 20000;
// printf("Value of passed value : %d",i);
return i;
}
如果取消注释extern int myGlobalvar
,该值不会改变。
有没有correct
两者之间的区别?
有人可以纠正我吗?
关键词extern
意思是“该变量的存储空间分配在其他地方”。它告诉编译器“我正在引用myGlobalvar
在这里,你以前没见过,但没关系;链接器会知道你在说什么。”在你的具体例子中它不是特别有用,因为编译器does知道关于myGlobalvar
-- 它是在同一翻译单元中较早定义的(.c
or .cc
文件。)您通常使用extern
当你想指代某个东西时not在当前翻译单元中,例如在您将链接到的库中定义的变量。
(当然,通常该库会声明extern
为您提供的变量,在您应该包含的头文件中。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)