前言
本博客主要介绍C++中extern关键字的作用以及其具体用法。
一、extern作用
extern是一种“外部声明”的关键字,字面意思就是在此处声明某种变量或函数,在外部定义。特殊的点就在于extern处仅是声明而不是定义(不分配内存,不赋初值)。
extern关键字常见在C++文件中调用C语言的库函数,那么就需要在C++程序中用extern “C”声明要引用的函数,用来告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。
其他的,extern还可以用于修饰函数或变量,下面分开进行讲解。
二、extern修饰函数
举个extern修饰函数的例子,比如说main.cpp 想调用function.cpp 中的fun函数,有两种方法:
方法1:include 头文件,即直接 #include “function.h”
方法2: extern 方法 ,extern void fun(…)这句在main.cpp中使用,表示引用全局函数fun(),当然,函数默认是全局的。
两种方法都可以,但是方法1会引入大量头文件,进而引入大量无关函数,而方法2就能加速程序编译从而节省时间!
三、extern修饰变量
如果文件main.cpp需要引用function.cpp中变量int v,就可以在main.cpp中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。注意,extern int v可以放在main.cpp中的任何地方,具体作用范围和局部变量相同。
extern修饰变量的原理就是告诉编译器:现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,正常通过!
总结
日拱一卒,功不唐捐!