C/C++中extern关键字用法详解

extern用于在多个文件中间中,定义一个全局变量或者函数。可以在其他文件中使用 extern 来得到一个已定义的变量或函数的引用。

extern用于函数声明

extern用于函数声明时,和普通的函数声明并没有区别。即extern int foo();和int foo();是一样的效果的。使用extern更多的是表示该函数在其他文件中定义。外部定义的函数一般都在 .h 文件中使用extern关键字声明。

extern用于变量声明

当你需要在多个文件中,使用一个全局变量时,你需要使用extern关键字来对全局变量进行声明。extern声明的全局变量一般放在.h文件中。

//demo.h
#ifndef DEMO1_H
#define DEMO1_H

extern int a;

#endif
//demo1.c

#include "demo.h"

a = 1;
void foo1(){cout << a << endl;}
//demo2.c

#include "demo.h"

void foo2(){cout << a << endl;}

我们在demo1.c和demo2.c中都可以访问到a这个变量。

注意:变量不可在头文件中定义。因为demo1.c和demo2.c都包含了demo.h,在demo.h定义a,会造成重复定义。但是,也别忘记在一个文件中第一变量,否则会造成未定义错误。

extern "C"用于C++中兼容C语法

由于c++生成符号表时,会把函数名和参数进行拼接来生成符号,所以c和c++混用,在链接时,会出现符号找不到的情况。此时使用extern ”C“{}来兼容c函数。

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

//代码段

#ifdef __cplusplus
}
#endif /* __cplusplus */

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值