本篇文章介绍的是C/C++中extern关键字的用法,其中主要谈到修饰变量时的用法,可以参考一下,希望对你有所帮助。

1.基本解释
 extern 可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外,extern 也可以用来链接指定。
 extern 有两个作用:(1) 当它与"C"一起连用时,如:extern “C” void func(int a);则告诉编译器在编译 func 函数名时按着 C 的规则去翻译相应的函数名而不是 C++ 的。关于这点,或许可以在《深度探索C++对象模型》一书中寻找答案;另外,在 Linux 下有一个 backtrace 函数可以打印堆栈信息,可以查看 C++ 翻译的函数名(muduo 库中有使用这个函数)。
 (2) 当 extern 不与 “C” 在一起修饰变量或者函数时,如在头文件中:extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或者其他模块中使用,记住它是一个声明不是定义!
2.当 extern 修饰变量时
 正确使用方法是:在 .c 文件中定义变量,在相应的 .h 文件中进行声明。
 我们通过是否会为变量来分配内存空间来判定是声明还是定义(严格来说,是单纯的分配内存,并不包括初始化部分)。那么 int i; 这句话是声明还是定义那?它既是声明,也是定义。如果我们在 test.h 文件中使用这句话,一旦在其他文件中定义 i(e.g.1),或者该文件被重复包含(e.g.2),那么就会产生重定义的错误。

/*e.g.1 以下为3个文件*///test.hint i;//test2.hint i;//main.cpp#include "test.h"#include "test2.h"int main(){return 0;}
/*e.g.2 以下为3个文件*///test.hint i;//test2.h#include "test.h"//main.cpp#include "test.h"#include "test2.h"int main(){return 0;}

相关教程:C视频教程

更多相关文章

  1. 什么是虚函数
  2. C++学习之new()和malloc()函数
  3. srand(time(null))函数是什么意思
  4. srand(time(0))函数是什么意思
  5. malloc函数的用法
  6. 静态变量和动态变量
  7. c语言定义函数
  8. memcpy函数用法
  9. c语言函数调用例子

随机推荐

  1. android之【RelativeLayout布局】
  2. 面向UDP的Android——PC双向通信(三):在Andr
  3. [转] Android电源管理
  4. android:configChanges
  5. Android是什么 之三-------手机之硬件形
  6. android kernel 初始化 1
  7. Android 6.0棉花糖新特性,
  8. android TextView 走马灯效果
  9. Android api,Android SDK
  10. android后台进程隐藏手段