如果C++程序要调用已经被编译后的C函数,该怎么办?
C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字
与C 语言的不同。假设某个C函数的声明如下:
void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern“C”来解决这个问题。例如:
extern “C”
{
void foo(int x, int y);
… // 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
… // 其它C头文件
}
这就告诉C++编译译器,函数foo是个C连接,应该到库中找名字_foo而不是找_foo_int_int。C++编译器开发商已经对C标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件。
如果C++程序要调用已经被编译后的C函数,该怎么办?相关推荐
- 问题-某个程序改了ICO图标后编译后还是显示老图标?
问题现象:某个程序改了ICO图标后编译后还是显示老图标? 问题原原:可能是因为系统的缓存问题. 问题处理:把程序的EXE放在别的路径下打开就可以了. 问题相关人员:QQ253120114(朋友) Q ...
- 在微信小程序中 调用前置摄像头拍照 后置摄像头拍照扫码
1.需求:点击扫码按钮,扫描二维码识别单号 实现: <view class="getcode" bindtap="scanCode"> &l ...
- c语言程序可以单独编译,c语言的函数能单独进行编译吗?
c语言的函数能单独进行编译吗? 发布时间:2020-04-20 10:27:20 来源:亿速云 阅读:493 作者:小新 c语言的函数能单独进行编译吗?很多人都不太了解,今天小编为了让大家更加了解c语 ...
- [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
很容易犯的错误,转载以备注! 转载请注明文章地址,尊重作者赖半仙的劳动成果,谢谢支持: http://hi.baidu.com/mgqw/blog/item/0969c4230a2508559922e ...
- 在C++程序中调用被C编译器编译后的函数为什么要加extern“C”?
首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编 译器,其声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中对本模块提供给其它模 ...
- gcc可以编译python程序吗_gcc c语言编译流程
1 前言 最近群里讨论个C语言的小程序,看起来都不是很难,但是大家对答案有争论,所以想讨论编译原理,做嵌入式要对编译原理有一定的了解,所以转了这篇文章. 我们之前讨论的问题如下代码 #include ...
- linux下java调用matlab程序,linux_java调用windows_matlab程序
0 说明 本文为研究java和matlab的混合编程,进行了详细的测试和探索,以解决linux环境下java程序调用matlab程序的一个应用. linux端的环境 :(运行java程序并调用wind ...
- MFC模块的动态链接库DLL以及静态链接库LIB编译后的调用
静态链接库LIB和动态链接库DLL的区别,创建和示例 1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都 ...
- TI-89T 教你在C程序里调用TI-BASIC程序,看看是否有人对这个感兴趣
2019独角兽企业重金招聘Python工程师标准>>> 教你在C 程序里调用TI-BASIC程序,看看是否有人对这个感兴趣 昨天翻TIGCC的文档,先瞅了瞅FAQ,话说我看文档有个习 ...
最新文章
- owaspbwa tickets
- mysql数据的表分区一
- B/S、C/S双客户类型系统研究
- java中使用tika_Tika基本使用
- 4.7 Spark SQL 数据分析流程
- 不能使用泛型的形参创建对象_泛型就这么简单
- 研磨设计模式--抽象工厂模式
- PyQt:1个文件选择对话框实现既可以选择文件,也可以选择文件夹
- c语言graphics下载,C语言_graphics.h
- 爱情智慧:从恋爱走向婚姻必备的理念
- Cortana搜索框怎么在任务栏显示?
- matlab x的平均值符号怎么打出来,教你在Word中输入平均数的符号X上加一横(X拔)...
- 红石模拟器android,Win10 Mobile红石3支持x86模拟器
- 2k*2k 棋盘覆盖问题
- 爬虫之数据保存到txt文本中
- matlab 滤波窗函数,FIR滤波器窗函数设计法详细步骤以及Matlab代码
- 【攻防世界】三、如来十三掌
- hadoop可能会遇到的问题
- PalmOS开发教程-3
- simple sentence to complex
热门文章
- JavaWeb中使用session保持用户登录状态
- 012_JDBC模板
- mysql frm和ibd怎么恢复数据库_mysql数据库通过frm和ibd恢复数据
- android封装网络请求界面,轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目...
- CentOS 迎来更新换代版本 CentOS Stream 9 附下载镜像OS地址
- 自动化测试报告 html模板,PyTestReport 自动化测试报告框架
- python用类名直接调用方法_Python类的实例方法、静态方法、类方法详解,附代码示例...
- 英语关于计算机的作文600字,有关电脑的作文600字
- html5下拉列表默认值,element-ui中的select下拉列表设置默认值方法_简单_前端开发者...
- NIO详解(十):FileChannel零拷贝技术