extern “C“ 理解
extern "C" 理解
/******tset.h******/
#pragma once#ifdef __cplusplus
extern "C" {#endif#include <stdio.h>
void Show();#ifdef __cplusplus
}
#endif/******tset.c******/
#include "tset.h"void Show()
{printf("hello world\n");
}/******externTset.cpp******/
#include <iostream>
#include "test.h"using namespace std;int main()
{Show();return 0;
}
由于在C++中函数是可以发生重载的,所以在编译时,编译器往往会将函数的形参与函数名以某种形式结合在一起,例如void func(int a, int b)可能会被编译成_func_i_i,然后再在链接阶段去.obj文件中寻找该函数。而C语言的函数没有重载机制,所以编译的时候只会用函数名来做标记,例如void func(int a, int b)可能会被编译成_func。
针对上面这个例子,如果没有用extern “C”,那么externTset在进行链接时,仍会采用C++的链接机制,会去test生成的.obj文件中找类似_Show_v的函数,很明显这是无法找到的,因为按照C语言的编译机制,Show函数只会被编译成类似_Show的样子。
但是在加上extern "C"之后,externTset在进行链接时就会按照C的链接方式去test生成的.obj文件中找类似_Show的函数,这样就能找到。
extern “C“ 理解相关推荐
- 2021最稳C/C++学习路线
大家好,我是唐唐. 此篇文章关于 C/C++/Linux后端开发的全路线. 前言 于我而言,最开始学习就是 C++,除了计算机专业,其他专业可能学习的第一门编程语言为 C 语言,还是谭浩强爷爷那本,当 ...
- 51单片机---一起来学习DS1302可调时钟(stc89c52芯片)
DS1302是一个实时时钟芯片,带有一个备用电池,在单片机不工作的时候继续走时:单片机 自带的定时器时钟并不能够调电继续运行,不能断电,然而这个时钟芯片带有备用电池,会给1302继续提供电流.(在主电 ...
- C语言extern关键字用法和理解
extern表明变量或者函数是定义在其他其他文件中的 例如:extern int a; 显式的说明了a的存储空间是在程序的其他地方分配的,在文件中其他位置或者其他文件中寻找a这个变量. 用法 一个c文 ...
- 深入理解extern用法
from:https://blog.csdn.net/z702143700/article/details/46805241 一. extern做变量声明 l 声明extern关键字的全局变量和函数 ...
- c++中extern用法-个人理解
1.在头文件中外部声明 例 在test.h中 extern bool flag: 在test.cpp中外部定义 #include <test.h> bool flag = true; 在其 ...
- extern数组与extern指针
数组名代表了存放该数组的那块内存,它是这块内存的首地址.这就说明了数组名 是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量.数组名 跟枚举常量一样,都属于符号常量.数组名 这个符号 ...
- C++中extern C的使用
C++程序有时需要调用其它语言编写的函数,最常见的是调用C语言编写的函数.像所有其它名字一样,其它语言中的函数名字也必须在C++中进行声明,并且该声明必须指定返回类型和形参列表.对于其它语言编写的函数 ...
- 嵌入在C++程序中的extern C
1.extern的作用 extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,可以告知编译器,用extern声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中 ...
- [深入理解Android卷一全文-第九章]深入理解Vold和Rild
为什么80%的码农都做不了架构师?>>> 由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的 ...
最新文章
- okhttp配置缓存策略_网站的缓存控制策略最佳实践及注意事项
- 微信开发-ACCESS TOKEN 过期失效解决方案
- Python: tkinter实例改名小工具
- 如何HttpWebRequest模拟登陆,获取服务端返回Cookie以便登录请求后使用
- php重写curl_setopt函数,PHP curl_share_setopt函数
- 奥鹏19春计算机应用基础,19春西南交《计算机应用基础》在线作业二(答案)-...
- codeforces 558D Guess Your Way Out! II 规律
- 塞雷三分钟漫画中国史1
- wamp php 教程,WAMP 添加php新版本
- Jquery实现弹幕效果
- 变焦 焦距 等效焦距
- (十五:2020.08.28)CVPR 2013 追踪之论文纲要(译)
- Android宠领养社区(源码+视频教程)
- 基于STM32的指纹锁
- x-admin前端模板左侧菜单栏消除记忆功能(清除缓存)
- 电商项目--------------------商品(SKU)规格、价格功能
- 以ofo为代表的共享经济退烧后,风投目光转向了芯片!
- 完美世界2017C++游戏开发笔试编程题
- 带空格的字符串输入处理
- 开源笔记编辑器MarkText安装,设置GitHub图床