extern "C"(外部链接C)
来源:互联网 发布:淘宝掌柜信用评分下降 编辑:程序博客网 时间:2024/04/28 13:04
我想我们很多VC开发人员都会遇到extern "C"修饰的函数或者类等等吧。那究竟在vc++开发中为什么要用这个extern "C"呢?它究竟有什么作用呢?不用它又会怎么样呢?
下面我就把对extern "C"的认识写下来,和大家分享一下,有不对的地方还请大家指出来,共同探讨进步!
extern "C"单就这个短语来看,我想我们大家应该都知道是什么意思。外部链接C,链接C什么呢,那当然是链接C库了。完整的意思就是外部链接C库。好了,这下我们应该大致知道它的用图了吧。为什么我们要在程序中外部链接C呢,无非不是我们程序需要调用C库具有的函数功能罢了。这样我们在写程序的时候,某些模块就不用自己花费精力花费财力去单独开发了,我们可以直接使用已有的而且经过严格考验的C库函数。所以一句话,用了extern “C”修饰的函数,意思就是说这个函数里面可能会用到C库中的某个函数,需要告诉编译器在编译的时候按照C风格的方式进行编译,这样在链接运行的时候连接器才能找到正确连接标识符。程序才能得以正常运行。
好了,上面说了extern “C”的作用。但是为什么会出现这种情况呢?原因是这样的,在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的。这样如果在c++中使用C库函数,如果不用extern “C”的话,那么那个C库函数经过编译就会得到与库中不一样的另一个名字,那么自然程序在进行链接的时候就找不到标识符,也就是我们经常遇到的链接错误问题了。如果你使用了extern “C”修饰,那么编译阶段就回按照C风格进行编译,那么编译产生的函数名自然就和库中函数名一样,这样程序在链接的时候当然就能正确的进行连接了。
还有就是因为C++之父在设计C++之时,考虑到当时已经存在了大量的C代码,为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C,而 extern "C"就是其中的一个策略。所以在c++中才有了extern “C”这种外部链接C库的用法,用以达到C和C++的互相调用和沟通。这样也就避免了大量重复代码的编制工作。
C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。
- extern "C"(外部链接C)
- 链接指示extern "C"
- extern "C" 链接指示
- 替代链接 extern “C”
- 链接提示 extern "C"
- C语言外部变量extern
- extern "C"链接指示符
- 链接指示符extern “C”
- 链接指示符extern “C”
- 链接指示符: extern “C”
- 大话链接指示器:extern ”C"
- 链接指示符extern “C”
- 链接指示符extern “C”
- C++ 链接指示器:extern ”C"
- C++_Primer_chapter18 7.3 链接指示:extern “C”
- 【C/C++】静态链接库、动态链接库、extern "C"
- 黑马程序员-C-static 和 extern (外部)
- C语言extern调用外部函数
- 逐步为对象集合构建一个通用的按指定属性排序的方法
- 大家好!
- PKU1190 生日蛋糕
- 开张了!
- Flex4种方法与后台交互的方法
- extern "C"(外部链接C)
- 发烧后的咽喉肿痛自我治疗
- 线程池(Thread Pooling)
- c# 正则表达式
- 嵌入式系统开发之CISC和RISC
- (转贴)Tinkpad 笔记本
- suse 3d桌面
- NOR和NAND的区别
- Big Endian 和 Little Endian