当前位置:网站首页>extern关键字
extern关键字
2022-07-06 14:40:00 【是北豼不太皮吖】
1.extern 可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,下面的代码用到的这些变量或函数是外来的,不是本文件定义的,提示编译器遇到此变量和函数时在其他模块中寻找其定义。就好比在本文件中给这些外来的变量或函数带了顶帽子,告诉本文件中所有代码,这些家伙不是土著。
C语言规定,如果在定义函数时省略extern,则默认为外部函数。
extern 修饰的变量或函数是定义还是声明?
答:是声明
A.c 文件中定义:
int i = 10;
void fun(void)
{
//code
}
B.c 文件中用 extern 修饰:
extern int i;
extern void fun(void);
2.至于 extern“C”的用法,一般认为属于 C++的范畴,这里就先不讨论。
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。
这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。
边栏推荐
- 十二、启动流程
- GPS from getting started to giving up (19), precise ephemeris (SP3 format)
- 12、 Start process
- [sciter]: encapsulate the notification bar component based on sciter
- What a new company needs to practice and pay attention to
- 【sciter Bug篇】多行隐藏
- SQL Server生成自增序号
- Oracle control file and log file management
- 2022年6月国产数据库大事记-墨天轮
- GPS从入门到放弃(十二)、 多普勒定速
猜你喜欢
LeetCode刷题(十一)——顺序刷题51至55
第3章:类的加载过程(类的生命周期)详解
微信红包封面小程序源码-后台独立版-带测评积分功能源码
2020 Bioinformatics | GraphDTA: predicting drug target binding affinity with graph neural networks
Shell product written examination related
C # réalise la liaison des données du rapport Crystal et l'impression du Code à barres 4
Notes de développement du matériel (10): flux de base du développement du matériel, fabrication d'un module USB à RS232 (9): création de la Bibliothèque d'emballage ch340g / max232 SOP - 16 et Associa
HDR image reconstruction from a single exposure using deep CNNs阅读札记
[Digital IC hand tearing code] Verilog burr free clock switching circuit | topic | principle | design | simulation
GPS from entry to abandonment (XIV), ionospheric delay
随机推荐
Solve project cross domain problems
Management background --1 Create classification
Adjustable DC power supply based on LM317
Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
Mongodb (III) - CRUD
Learn the principle of database kernel from Oracle log parsing
[leetcode daily clock in] 1020 Number of enclaves
The SQL response is slow. What are your troubleshooting ideas?
Management background --5, sub classification
[10:00 public class]: basis and practice of video quality evaluation
Unity3D学习笔记6——GPU实例化(1)
GPS from getting started to giving up (16), satellite clock error and satellite ephemeris error
qt quick项目offscreen模式下崩溃的问题处理
嵌入式常用计算神器EXCEL,欢迎各位推荐技巧,以保持文档持续更新,为其他人提供便利
Shortcut keys in the terminal
MariaDB database management system learning (I) installation diagram
Anaconda installs third-party packages
微信红包封面小程序源码-后台独立版-带测评积分功能源码
[sciter bug] multi line hiding