【C】 extern和extern “C“

extern关键字用于在C语言中引用其他文件中的变量和函数。声明extern变量表示它是全局的,而定义时不加extern表示初始化。同样,extern也可用于函数声明。推荐做法是通过头文件(如a.h)来包含extern声明。此外,externC用于C++代码调用C语言代码,保持兼容性。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值