extern:显示的表明 变量或者函数的定义在别的文件中。
情景1:一个c文件需要调用另一个c文件里的变量或者函数。
情景2:多个cpp文件中都想调用同一个变量或者函数。
extern和include的区别
情景1:一个c文件需要调用另一个c文件里的变量或者函数。
main.cpp :
#include<iostream>
using namespace std;
extern void funa();
extern void funb();
int main()
{
std::cout << "main()\n";
funa();
funb();
}
a.cpp
#include <iostream>
void funa(){
std::cout << "funa()\n";
}
b.cpp
#include <iostream>
void funb() {
std::cout << "funb()\n";
}
情景2:多个cpp文件中都想调用同一个变量或者函数。
比如main.cpp,a.cpp,b.cpp都想调用 comm.cpp的函数
a.cpp
#include <iostream>
extern void comm();
void funa() {
std::cout << "mainfuna()\n";
comm();
}
b.cpp
extern void comm();
void funb() {
std::cout << "mainfunb()\n";
comm();
}
comm.cpp
#include <iostream>
void comm() {
std::cout << "comm()\n";
}
head.h
#pragma once
void funa();
void funb();
main.cpp中调用
#include <iostream>
#include "head.h"
/*
1.定义
extern int a=5;
int a=5
2.声明
extern a
*/
int main()
{
std::cout << "main()\n";
funa();
funb();
}
extern和include的区别
本质上来说,#include和extern没什么差别,但是extern具备很多优点:
当用到多个外部变量的时候,extern在每个用到的文件中需要用多个extern声明
而#include只需要在include各声明一次,其他使用这些变量的时候只需要包含该头文件即可