目录

  • 一.__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

C语言 __cplusplus - C语言零基础入门教程相关推荐

  1. C语言 const 修饰函数参数 - C语言零基础入门教程

    C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...

  2. 视频教程-Python零基础入门教程-Python

    Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...

  3. Python零基础入门教程( 快速入门)

    前言 学无止境,无止境学. 今天要给大家分享的是<Python零基础入门教程01 快速入门>,这是一个系列的教程,从零基础到项目实战.在本教程中,我会给大家介绍Python入门的一些基础知 ...

  4. C++零基础入门教程:基础篇(一)

    前言 嘿嘿,我叕来啦─=≡Σ(((つ•̀ω•́)つ!别问我为什么突然变成了零基础入门教程(一),因为前面那三篇都是基础的不能在基础的教程了.(其实是因为顺序乱了,而且那时候没有单独弄一个专栏,后面我会 ...

  5. 周易零基础入门教程(一)

    感觉这几篇简单的教程很不错哦.大概由于以前看过这类书籍,估计也是很零散的,所以我读这几篇感觉很亲切,没啥难点,一口气读完了,醍醐灌顶.接下来就是自己慢慢琢磨的节奏了! 周易零基础入门教程 作者:江南易 ...

  6. python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)

    一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...

  7. SEO零基础入门教程(外链的发布和软文编写)

    seo的作用是众所周知的,对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo ...

  8. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  9. 计算机pscs6教程,photoshop CS6零基础入门教程

    <photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...

  10. finereport自学教程_办公物语丨Finereport零基础入门教程,你不可缺少的报表神器...

    原标题:办公物语丨Finereport零基础入门教程,你不可缺少的报表神器 ⌛ 小办又来了,快,搬好你的小板凳. 今天小办要着重讲一下 之前推文里提到过的制表神器. 当你逐渐发现Excel不能满足你的 ...

最新文章

  1. CodeForces Round #287 Div.2
  2. PHP代理模式Proxy Mode
  3. java epoll select_Java后端常见面试题
  4. python 之属性_Python之对象的属性
  5. C++调用WebService
  6. Linux之文件查找
  7. 关于微信红包的架构思考
  8. I/O多路转接之select
  9. jenkins linux编译c,【Linux】【Jenkins】代码编译和执行过程中的问题汇总
  10. 几种在shell命令行中过滤adb logcat输出的方法
  11. 99+好友共同关注,公众号推荐
  12. ie 调用java的时候报错,关于java的applet在网页中打开的时候出错
  13. 架构整洁之道 pdf_代码有整洁之道,而架构同样有整洁之道
  14. 通用汽车再次提高自动驾驶与电动汽车投资 增至350亿美元
  15. 【Elasticsearch】分片未分配 (UNASSIGNED) failed to obtain in-memory shard lock
  16. loader 编写一个android_Android之Loader理解
  17. java web 插件式开发_Java Web 后台开发效率提高:插件讲解
  18. 没有躲过的坑--vector使用erase后迭代器变成野指针
  19. samsung q1u android,奢华配置指纹科技 三星Q1U再造UMPC王者
  20. c# 通过读取Json文件生成HTML页并在浏览器显示

热门文章

  1. 秒级启动万个容器,探秘阿里云容器镜像加速黑科技
  2. 读懂这本书,才算读懂阿里大数据
  3. 阿里HBase高可用8年“抗战”回忆录
  4. 【译】用SQL统一所有:一种有效的、语法惯用的流和表管理方法
  5. 懂编译真的可以为所欲为|不同前端框架下的代码转换
  6. 通过FD耗尽实验谈谈使用HttpClient的正确姿势
  7. 阿里云数据传输服务低价不低质,服务再升级
  8. 启明星辰集团DT总部落地杭州 数据绿洲版图驱动未来发展
  9. 腾讯自研分布式远程Shuffle服务Firestorm正式开源
  10. 山石网科发布重磅容器安全产品“山石云铠”,云安全版图再下一城