extern 关键字:
与extern 对应得关键字是static,被它修饰得全局变量和函数只能在本模块中使用。
- 修饰变量
- 修饰函数
- extern “C”
1. extern 修饰变量:
.cpp的变量要在另一文件中使用,需要用extern进行声明。
.h的变量要在另一文件中使用,可以加头文件包含或extern进行声明。
//1.cpp
int j = 0;
// main.cpp
#include<iostream>
using namespace std;
extern int j;
int main()
{
cout << ++j;
return 0;
}
2. extern 修饰函数:
函数也有声明和定义,但由于函数的声明和定义是有区别的,函数的定义是有函数体的,所以函数的声明和定义都可以将extern省略掉,反正其他文件也是知道这个函数是在其他地方定义的。
3. extern “C” 作用:
extern "C"是实现C与C++混合编程的。extern "C"是C++提供的一个连接交换指定符号,告诉C++这段代码是C函数。
- cpp调用C中的函数/变量
- c中调用cpp的函数/变量
例子: cpp调用C中的函数
- 在c中实现函数add:
int add(int a, int b)
{
return a + b;
}
- 在cpp中调用该函数:
#include <iostream>
using namespace std;
extern "C" int add(int a,int b);
int main()
{
cout << add(1, 2) << endl;
return 0;
}
例子: C调用cpp中的函数
- 在cpp中实现函数add:
extern "C" int add(int a, int b)
{
return a + b;
}
- 在c中调用该函数:
#include <stdio.h>
extern int add(int a, int b);
int main()
{
printf("%d", add(1, 2));
return 0;
}
参考网址:
http://www.cppblog.com/haosola/archive/2014/04/26/206722.aspx