例如a.c文件中定义了int a=5和一个函数,在a.h里写extern int a;如果要在其他文件里调用a这个变量和函数,直接#include<a.h>即可。
/*a.h*/
#ifndef _A_H_
#define _A_H_
extern int a;
int func(int a, int b);//注意,函数声明的extern可以省略。
#endif
/*a.c*/
#include "a.h"
int a = 5;
int func(int a, int b)
{
return a + b;
}
但是,个人认为。调用其他c文件中的变量,不如将该变量封装成函数提供其他地方调用,然后将改变了加上static。
/*a.h*/
#ifndef _A_H_
#define _A_H_
int get_a();
int func(int a, int b);//注意,函数声明的extern可以省略。
#endif
/*a.c*/
#include "a.h"
static int a = 5;
int func(int a, int b)
{
return a + b;
}
extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern “C”后,回指示编译器这部分代码按C语言的进行编译,而不是C++的。
/*a.h*/
#ifndef _A_H_
#define _A_H_
#ifdef __cplusplus
extern "C"{
#endif
int get_a();
int func(int a, int b);//注意,函数声明的extern可以省略。
#ifdef __cplusplus
}
#endif
#endif