C++调用C函数,为什么要加extern "C"?
来源:互联网 发布:http请求格式 json 编辑:程序博客网 时间:2024/06/05 16:41
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
比如函数:void fun(int x, char y)
C++有重载功能,所以编译后的函数名会变为__fun_int_char
而C语言没有重载,编译生成的函数名为__fun
要是没有加extern "c",C++连接器链接查找fun函数是就会按照__fun_int_char这个名字查找,自然会提示连接失败,找不到。而加上externa "c",就是告诉链接器要按照C语言规则去查找,这时链接器就会按照__fun查找,这样才会链接成功了
0 0
- C++调用C函数,为什么要加extern "C"?
- C++调用C函数,为什么要加extern "C"?
- c调用c++函数,为什么要加extern c
- 在C++中调用被C编译器编译后的函数,为什么要加extern "C"
- 为什么在C++里调用被C编译器编译的函数,要加extern "c"
- c++程序调用被C编译器编译后的函数为什么要加extern "C"
- 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern
- C++函数重载机制及为什么要加extern C
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 经典面试题目--在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 第19讲----项目1 字母及其编码
- ajaxFileUpload.js 修复"unexpected token '<'" bug
- matlab 有约束与无约束优化求解 optimization
- 如何自建FTP站点
- android 源代码修改了之后编译生成本地的sdk,以方便在eclipse里面直接使用,调用所改动的API接口函数
- C++调用C函数,为什么要加extern "C"?
- 第19讲----项目2 C语言中的字符对齐
- Android基础入门教程——8.3.3 Paint API之—— MaskFilter(面具)
- Spring事务配置的五种方式
- LeetCode 080 Remove Duplicates from Sorted Array II
- Linux系统安装JDK后gij问题
- 天声人語 20151024 地図上の「架空の町」
- 工业相机编程模型和流程
- HDU 4788 Hard Disk Drive