当前位置: 首页 > 工具软件 > c > 使用案例 >

【C】 extern和extern “C“

濮阳品
2023-12-01

extern关键字的用法

  • 一个c文件需要调用另一个c文件里的变量或者函数,而不能从.h文件中调用变量。
  • extern int a=5和int a=5意义是一样的,都是定义。而extern int a是声明。
  • 对于函数而言,和引用变量是一样的,如果需要调用其他c文件中的函数,在文件中的函数声明前加extern即可,不加extern而直接声明函数也可以,因为声明全局函数默认前面带又extern。
  • 如果不想让其他c文件引用本地文件中的变量,加上static即可。

建议最优用法

例如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”的用法

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
 类似资料: