1、声明外部的变量
由于编译是对单个的文件进行编译,所以在编译一个a.cpp文件的时候,若是要在a.cpp中使用b.cpp中的变量,直接使用则编译肯定会报错的,所以这个时候应该用extern修饰在a.cpp中所使用的b.cpp中的变量,这个时候编译器会忽略这个错误,直到链接的时候(“将文件融为一体”)会找到b.cpp中的变量,这样便可以了。extern的作用相当于让编译器在编译阶段忽略这个错误
例:
//a.cpp
extern int a; //并未分配空间,只是通知编译器,在其它文件定义过
printf("%d",a);
//b.cpp
int a = 9;
2、在一个C++文件中调用另一个C++文件中的函数
和第一点是一样的,a.cpp中调用b.cpp中的函数,需要在a.cpp中申明函数是extern的
注意,这个声明,其实就是. h头文件的内容
这个extern可以省略
如果头文件中仅仅是这个函数声明,一是extern可以省略。二是相应的源文件. c不用包含这个头文件
即不需要#include xxxxx. h文件
3、在C++文件中调用C方式编译的函数
主要原因是C++在编译后生成的函数名和C的函数名不一样,需要有一个转化过程,在C++中通过extern "C"修饰函数,可以表明这个函数是C编译的,命名规则就符合C。
//a.cpp C++编译
extern “C” //不加会报错,提示找不到该函数
{
void print();
}
void main()
{
print();
}
//b.cpp C编译
void print()
{
printf("123456");
}
————————————————
版权声明:本文为CSDN博主「晚餐吃什么」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Think88666/article/details/90706719