C++ extern到底怎么用?
基本解释
extern也可用来进行链接指定;也可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中
,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
说人话,即有以下两个作用:
- 与“C”连用,如extern “C” void fun();告诉编译器按
C的规则
去翻译 - 修饰声明全局变量或函数,其声明的变量和函数可以在其它模块(文件)中使用,注意,这
只是一个声明
而不是定义,具体的定义要在具体的模块中完成
例子
举个例子,我们想要声明一个long int runtime_minute变量供多个模块使用:
//time.h
#ifndef TIME_H
#define TIME_H
//首先我们在time.h中进行以下声明:
extern long int runtime_minute;
#endif //TIME_H
在头文件中通过extern声明的变量并没有定义,所以要在time.cpp中给出定义:
//time.cpp
#include "time.h"
//在time.cpp中给出runtime_minute变量的具体定义:
long int runtime_minute = 0;
这时,如果想要在time2.cpp中使用这个定义在time.cpp中的runtime_minute变量,只需要包含time.h这个头文件即可:
//time2.cpp
#include "time.h"
#include <iostream>
//在time.cpp中给出runtime_minute变量的具体定义:
int main(){
runtime_minute++;
std::cout<<runtime_minute<<std::endl;
//输出为1
return 0;
}