extern

来源:互联网 发布:周扬青淘宝店链接 编辑:程序博客网 时间:2024/06/05 06:40
一,static和extern:
大工程下我们会碰到很多源文档。
                
文档a.c
static int i; //只在a文档中用
int j;    //在工程里用
static void init()         //只在a文档中用
{
}
void callme()          //在工程中用
{
   static int sum;
}

上面的全局i变量和init()函数只能用在a.c文档中,全局变量sum的作用域只在callme里。
变量j和函数callme()的全局限扩充到整个工程文档。所以能够在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或函数在其他文档里已被定义了。

文档b.c
extern int j;     //调用a文档里的
extern void callme();  //调用a文档里的
int main()
{
  ...
}

为了使程序更加清晰,可以在使用外部变量的函数中通过使用extern关键字来再次声明它(通常情况下我们都省略它)。如果变量是在别的文件中定义的,使用extern来声明该变量就是必须的。
extern的另外用法是当C和C++混合编程时假如c++调用的是c源文档定义的函数或变量,那么要加extern来告诉编译器用c方式命名函数:
文档A.cpp调用a.c里面的变量i和函数callme()
extern "C"  //在c++文档里调用c文档中的变量
{
   int j;
   void callme();
}
int main()
{
   callme();
}
原创粉丝点击