C语言 extern “C” - C语言零基础入门教程

目录

  • 一.__cplusplus 简介
  • 二.__cplusplus 使用
  • 三.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.__cplusplus 简介

__cplusplus 和 extern “C” 一般都是配对使用,我们在阅读程序时,经常会见到__cplusplus 关键字,比如下面的代码:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 __cplusplus
//@Time:2021/07/14 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#ifndef __CODERSRC_H__          /*防止该头文件被重复引用*/
#define __CODERSRC_H__#ifdef __cplusplus             //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的
extern "C"{
#endif/*.................................* do something here*.................................*/#ifdef __cplusplus
}
#endif#endif /*end of __CODERSRC_H__*/

分析:头文件中编译宏”#ifndef __CODERSRC_H** 、#define __CODERSRC_H**、#endif”作用是为了防止该头文件被重复引用;

同时也是告诉编译器,如果定义了__cplusplus( cpp 文件默认定义了该宏),则采用 C 语言方式进行编译(即:在 c++ 中调用 c );

重点提示:如果是 C++ 调用由 C 语言编写的第三方库,必须使用 extern “C” 告诉编译以 C 方式编译,否则会出现编译报错的问题;

二.__cplusplus 使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 __cplusplus
//@Time:2021/07/14 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#ifdef __cplusplus
extern "C" {
#endifvoid *memset(void* ,int , size_t);#ifdef __cplusplus
}
#endif

由于 C 和 C++ 毕竟是不同的,为了实现某个程序在 C 和 C++ 中都是兼容的,如果定义两套头文件,未免太过麻烦,所以就有了 __cplusplus 的出现,这个是在 C++ 中特有的,__cplusplus 其实就是 C++ ,也就有了上面第一段代码的使用,如果这段代码是在 C++ 文件中出现,那么经过编译后,该段代码就变成了:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 __cplusplus
//@Time:2021/07/14 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************//**********C++文件中条件编译后结果***************/
extern "C" {
void *memset(void* ,int , size_t);
}而在C文件中,经过条件编译,该段代码变成了:
/**********C文件中条件编译后结果*************/
void *memset(void* ,int , size_t);

三.猜你喜欢

  1. C 语言 数组下标越界和内存溢出区别
  2. C 语言 指针声明和定义
  3. C 语言 指针 p++ / p–
  4. C 语言 p++/§++/_(p++)/_p++
  5. C 语言 使用指针遍历数组
  6. C 语言 指针和数组区别
  7. C 语言 指针数组和数组指针区别
  8. C 语言 空指针 NULL
  9. C 语言 void 指针
  10. C 语言 野指针
  11. C 语言 函数值传递和址传递
  12. C 语言 函数缺省参数
  13. C 语言 函数不定长参数
  14. C 语言 函数指针
  15. C 语言 指针函数
  16. C 语言 回调函数 callback
  17. C 语言 typedef
  18. C 语言 define 定义常量
  19. C 语言 define 防止头文件重复包含
  20. C 语言 #pragma once
  21. C 语言 #include <> 与 #include “” 区别
  22. C 语言 const 修饰变量
  23. C 语言 const 修饰指针
  24. C语言 const 修饰函数
  25. C 语言 const 修饰函数参数
  26. C 语言 const 和 define 区别
  27. C 语言 #运算符
  28. C 语言 ##运算符
  29. C 语言 extern “C”
  30. C 语言 __cplusplus

未经允许不得转载:猿说编程 » C 语言 __cplusplus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

趣挨踢 | 那些出现在电影或电视剧中的精彩代码,你认出来几个?

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员最幽默&#xff08;ID&#xff1a;humor1024&#xff09;编译链接&#xff1a;https://moviecode.tumblr.com/一些比较良心的电视和电影中会把代码这些细节做到机制&#xff0c;就算是屏幕上一闪而过&#xff0c;也都有理有据…

jq之fadeOut()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 #运算符 - C语言零基础入门教程

目录 一.#运算符简介二.#运算符使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.#运算符简介 在 C 语言关于 define 的文章中我们有介绍到&#xff1a;凡是以 # 开头的均为预处理指令&#xff0c;预处理又叫预编译。预编译不是编译&…

C语言 __cplusplus - C语言零基础入门教程

目录 一.__cplusplus 简介二.__cplusplus 使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.__cplusplus 简介 __cplusplus 和 extern “C” 一般都是配对使用&#xff0c;我们在阅读程序时&#xff0c;经常会见到__cplusplus 关键字&…

jq之fadeIn()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

Hadoop精华问答 | 非大数据的项目能否用Hadoop?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术的日新月异,让我们见证了Hadoop十年从无到有&#xff0c;再到称王。2006年项目成立的一开始&#xff0c;“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的10个年头&#xff0c;这个单词代表的是“核心”以及与…

C语言 ##运算符 - C语言零基础入门教程

目录 一.##运算符简介二.##运算符使用 1.##运算符常规使用2.##运算符定义结构体 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.##运算符简介 在 C 语言关于 define 的文章中我们有介绍到&#xff1a;凡是以#开头的均为预处理指令&#xf…

jq之toggle()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

要闻君说:很惊喜!原来坐火车也可以刷支付宝啦!加速5G,IBM要和沃达丰宣布成立合资公司!特斯拉要裁员7% 以削减成本...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;偶是要闻君。新年将至&#xff0c;年会未满&#xff0c;先听一首有关“假日”的歌曲吧&#xff0c;别忘记看要闻鸭&#xff01;文/要闻君春节即将…

C语言 __VA_ARGS__ - C语言零基础入门教程

目录 一.__VA_ARGS__简介二.__VA_ARGS__使用 1.__VA_ARGS__宏输出字符串常量2.__VA_ARGS__宏输出可变参数 三.__VA_ARGS__缺点 1.仅仅只支持字符串常量&#xff0c;不支持可变参数2.仅仅只支持可变参数&#xff0c;不支持字符串常量 四.猜你喜欢 零基础 C/C 学习路线推荐 : C/…

jq之hide(1000)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

K8S的SDN容器网络解决方案【机制篇】

戳蓝字“CSDN云计算”关注我们哦&#xff01;编者按&#xff1a;关于容器网络的解决方案业界已经有较多的讨论&#xff0c;笔者无意继续赘述。本文从K8S的网络实现入手&#xff0c;重点阐述SDN在容器网络中的应用价值。K8S及其网络模型体现了鲜明的解耦设计思想&#xff0c;采用…

C语言 ##__VA_ARGS__ - C语言零基础入门教程

目录 一.##__VA_ARGS__原理二.##__VA_ARGS__使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.##__VA_ARGS__原理 C 语言中 __VA_ARGS__ 是一个可变参数的宏&#xff0c;是新的 C99 规范中新增的&#xff0c;目前似乎只有 gcc 支持&#…

jq之隐藏和显示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 函数不定长参数 ##__VA_ARGS__经典案例 - C语言零基础入门教程

目录 一.##__VA_ARGS__简介二.##__VA_ARGS__经典案例三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.##__**VA_ARGS__**简介 [__VA_ARGS__](https://www.codersrc.com/archives/9450.html) 在前面的文章也介绍了&#xff0c;有两个缺点&…

总编下午茶专题汇总

《总编下午茶》是CSDN一档关注技术应用和IT前沿的访谈类栏目&#xff0c;由CSDN各主编担任该节目主持人&#xff0c;并邀请众多技术大咖分享技术热点与前沿知识&#xff0c;同时也是技术小伙伴们分享交流的最佳平台。 NLP可行性研究方向和应用热点 “现在NLP技术处于什么发展…

jq之div hide slow

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

云重磅 |央视专访任正非;拼多多被薅上亿羊毛;甲骨文对云未来的10项技术预测...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周二第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

jq之mousedown

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

关于云原生,这是最详细的技术知识

戳蓝字“CSDN云计算”关注我们哦&#xff01;本文旨在揭示现代软件行业的关键主题——云原生应用程序。这篇文章涉及微服务、容器和无服务器应用程序。在这里&#xff0c;我们将讨论这些技术的实际优点和缺点。微服务是什么微服务架构作为构建现代软件应用程序的强大方法而享有…