#ifdef __cplusplus extern “C” { #endif的作用!
#ifdef __cplusplus
extern “C”
{
#endif//代码#ifdef __cplusplus
}
#endif
解释:
(1)cpp中对函数的重载处理。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的.
(2)C++之父在设计C++之时,考虑到当时已经存在了大量的C代码,为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C,而extern"C"就是其中的一个策略。因此,为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。
(3)使用过程中,会用到#ifdef __cplusplus #endif 对头文件进行定义声明,表示的意思是:如果这是一段cpp的代码,那么加入"extern "C"{" 和 " }"处理其中的代码,其中{ }内部的代码是通过extern"C"进行处理,所以在所有的头文件引用中,如果是CPP代码文件,就会自动调用g++进行编译,但是如果是C代码文件,自动调用gcc进行编译;
#ifdef __cplusplus extern “C” { #endif的作用!相关推荐
- “#ifdef __cplusplus extern C { #endif”的定义(zz)
"#ifdef __cplusplus extern "C" { #endif"的定义 看一些程序的时候老是有 "#ifdef __cplusplus ...
- #ifdef __cplusplus extern C { #endif”的定义的含义
看一些程序的时候老是有 "#ifdef __cplusplus extern "C" { #endif"的定义,搞搞清楚是怎么回事: Microsoft-Spe ...
- #ifdef __cplusplus extern C { #endif”的定义
平时我们在linux c平台开发的时候,引用了一些Cpp或者C的代码库,发现一些头文件有如下代码条件编译. #ifdef __cplusplus extern "C" { #end ...
- 第五天2017/04/06(下午1:C、C++混合编程 与 #ifdef __cplusplus extern C{ })
C++.C编译器对函数编译的相关知识:C++支持函数重载,而C不支持,两者的编译规则也不一样.函数被C++编译后在符号库中的名字与C语言的不同.例如,假设某个函数的原型为: void foo( int ...
- c语言中endif的作用,C语言中#ifdef,#ifndef和#endif的作用
现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个 ...
- #ifdef __cplusplus extern “C”的作用详解
https://blog.csdn.net/dayou1024/article/details/107017432
- C语言中#ifdef,#ifndef和#endif的作用
1.用于注释掉一段代码 我们自己编写程序的时候,需要看到一系列的调试代码,但是发给客户的时候,客户可不希望看到什么什么OK的代码,所以我们希望能很容易地注释掉这段代码. 这时需要用到预处理指令 #if ...
- c++ 中extern C 及#ifdef __cplusplus的作用
浅析extern "C"的作用 关于extern "C"的作用和意思,网上资料已经有很多了(我也参考了几篇),不过我还是觉得有必要自己总结一下,毕竟" ...
- 关于“#ifdef __cplusplus” 和 extern C 的问题
转载自:https://blog.csdn.net/u012234115/article/details/43272441 时常在cpp的代码之中看到这样的代码: [cpp] view plainco ...
最新文章
- ElasticSearch 2 (37) - 信息聚合系列之内存与延时
- 用 Docker Machine 创建 Azure 虚拟主机
- MSChart中转义符
- python大神推荐_大神推荐!!!高评分书籍轻松带你入门Python
- Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
- 消息模板取数据的高阶使用说明
- yytextview多种格式_YYText之图文混排
- 根据经纬度算两点距离
- 2010-2012迷你博客
- springboot项目打包报错
- 电商数仓(dwt 层)
- java缓存框架zookepper_Zookeeper分布式开源框架
- vscode 插件 leetcode 登录失败问题
- ShaderJoy —— “水面波纹消散” 的实现 【GLSL】
- github使用指南(史上最全)
- 【渝粤教育】电大中专新媒体营销实务 (4)作业 题库
- 计算机网络---TCP序列号和确认号
- PC市场如何再起波澜?荣耀的创新或是答案
- CMS几种GC模式解读
- 出现 DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9 错误的原因及解决方法
热门文章
- MySQL 搜索指定时间范围数据, 时间字段有索引但是还是很费时
- NSAssert的使用
- Luogu 2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
- BZOJ.3257.树的难题(树形DP)
- [SCOI2005]扫雷
- Hibernate 一对一关联关系
- 我对NHibernate的感受(2):何必到处都virtual
- 升级GCC 4.6后的warning: ”variable set but not used“
- Java 集合中的方法性能分析
- Vue creatElement