VC中extern的使用

extern为外部连接符号
通常是在定义接口(全局变量)的时候这样使用的,这样的一个声明写在头文件内,供其他文件包含。 这时候extern表示函数的实现部份不在文件内部,在连接的时候统一由连接器处理,编译器通常会假定编译时候找不到实现部份的函数为extern形式.当然,加了extern也可以在该文件内写实现,不过我们一般不这样做,因为我们知道 在同一个项目中变量可以多处申明,但定义只能一次。如果将定义写的一个头文件中,而在不同的实现文件要包含该头文件的话,则会出现多重定义的错误。

 对于函数来说 写不写这个extern都是extern的, 除非要指定导出格式, 最常见的就是多种语言混合编程经常用到 extern "C" 。

变量用extern的例子如下:

//A.h

extern int a;

//A.cpp

#include"A.h"

int a=5;

//B.cpp

#include"A.h"

printf("a=%d",a);

 

//C语言中的解释:

如果不在一个文件中,如FILE1 和 FILE2 是两个不同的文件。我们想在 FILE1 用变量 i (它的类型是 int), 但它是在 FILE2 中定义的。我们必须在FILE1 中说明 i :extern int i;

如果extern 的说明的最初定义是在同一个文件中, 并且是在使用它的函数之前, 就可以忽略它。

如果你在一个文件中, 要在一个外部变量的定义之前使用它, 那么你必须在用之前先用 extern 来说明它。看一个例子:
  try()
    {
       extern int i;      <--- i必须先用
        i=i+5;
        ...
    }
    ...
   int i;                   <---i在后面定义  

#ifndef M

#define M

.....这里可以定义变量或者头文件

#endif

你可能感兴趣的:(编程,c,File,语言,编译器)