extern的使用

来源:互联网 发布:淘宝办韩国签证靠谱吗 编辑:程序博客网 时间:2024/05/21 08:50

      extern置于一个变量或函数前,也可用来进行链接指定。下面是几种使用情况:

    (1)在一个源文件中定义:char a[6];    (定义一个字符数组)

             另一个文件中声明:extern char *a;(声明一个指针变量)

             注意:第二个是非法访问,指向类型T的指针并不等价于类型T的数组,所以改为extern char a[];

    (2) 对于变量:定义只能出现在一处,声明可出现很多次。

            如:extren int a;声明一个全局变量a。

                   int a;定义a 

                   extren int a=0;声明并给初值

                   int a=0;定义并给初值

    (3)用于变量声明的一个作用

             在*.c文件中声明了一个全局变量,此变量如被引用,就在*.h文件并用extern声明。

    (4)现代编译器采用文件编译方式

             编译时,各文件中定义的全局变量相互透明;

             链接时,将各文件内容“合为一体”,全局变量名不可以相同,否则会报错,变量可见范围扩大到整个程序。

             用extren告诉编译器,标识符在别的文件中定义。

    (5)用于函数前面

             可用来取代 include “*.h" 来声明函数,但为了避免错误,还是用include好些。

     (6)extern int a;这个只是声明,不会分配内存空间的。

              C中不支持extren “C”。

              C++中调用一个C语言编写的.DLL时,当包含.DLL的头文件或声明接口函数时,应加extren “C” {}。

              C++中引用C中函数或变量时,C++头文件中需加extren “C”。

              但是中不可直接引用声明了extern “C”的头文件,应该仅仅将C文件中C++中定义的extern “C”函数声明为  

     extern类型,也就是说将C++中需要定义为extern类型的函数,单独extern。

             例://C++头文件 example.h

                   #ifndef EXAMPLE_H

                   #define EXAMPLE_H

                    extern "C" int add(int x,int,y);

                  #endif

              

                 //C++源文件  example.cpp

                  int add (int x,int ,y)

                  {

                       return x+y;

                  }

         

                 //C实现文件 cFile.c

                 //会编译出错 #include "example.h"

                  extern int add(intx,int y);

                  int main(int argc,char *argv[])

                  {

                         add(2,3);

                         return 0;

                  }

       

原创粉丝点击