⑤ESP8266 开发学习笔记_By_GYC 【ESP8266 IDF框架 使用C++编程】

目录

⑤ESP8266 开发学习笔记_By_GYC 【ESP8266 IDF框架 使用C++编程】

一、简单的开始

二、主函数文件使用C++编程

三、为什么使用C++


由于C++具有封装、继承与多态的优秀特性,所以我将很多项目封装成了类方便调用,本部分会简单介绍一下如何在ESP8266中使用C++进行编程和一些注意事项。

一、简单的开始

我们使用的交叉编译工具链本身就支持C++,而且在官方的makefile里也写了C++编译相关的支持,所以对于用户来说,使用C++语言对ESP8266进行编程相当的容易,只需要将源文件的后缀改为“*.cpp” 、头文件改为 “*.hpp” ,或者直接添加“*.cpp” 、 “*.hpp”文件就可以实现使用C++语言编程。

二、主函数文件使用C++编程

同样的原理,在main文件夹下,将user_main.c 改为 user_main.cpp 。文件中就可以使用C++的各种关键字和语法了。

不过在user_main文件中,仅仅是支持C++编译还是不够的。因为编译器需要找到app_main这个函数作为用户程序入口。直接编译会报错找不到app_main函数。

基于此情况,我们需要给 app_main 函数加上 extern "C" 来告诉编译器,这个函数使用C语言风格编译,启动程序就能够正常的找到用户程序的入口了。

问题产生的原因和解决的原理如下:

此部分引用 作者:obatmg 的描述,详细原文链接为:https://blog.csdn.net/u014783685/article/details/84973067

C++编译器在将cpp文件编译成库时,导出的函数名会改变,成员函数会通过加一些元素变成全局函数,如果这时候我们需要用C语言调用C++的函数,就会遇到C语言程序无法根据用户提供的函数名寻找到C++库中导出的真实函数名的问题,C++库中导出的真实函数名是由编译器决定的,这个时候就需要用到extern关键字。

extern "C"的含义就是告诉编译器,下面的函数使用C风格来编译,C语言编译时就不会修改函数名,因为没有重载,类,命名空间等这些概念,函数名是唯一的,而C++因为有类、命名空间、函数重载这些概念,所以函数名可能是相同的,所以C++编译器会修改函数名,使得两个相同函数名的函数在调用时不会产生冲突。
---------------------

使用 extern "C" 来告诉编译器 之后,我们就可以正常的进行编译和使用了。

三、为什么使用C++

使用C++具有封装、继承与多态的优秀特性,我可以将很多项目封装成类,做成各种通用接口,方便在其他项目中调用。

使用C++类的概念,我可以构建各种子模块,通过添加类的方式添加新的功能,实现快速高灵活性的开发。

后面介绍的一些项目中也常常用到C++语言,所以在这里先做一个总结和说明,来记录和介绍我在ESP8266 IDF框架中使用C++的方法。我自己开发的小项目会上传到 我的github仓库上(https://github.com/gengyuchao),欢迎大家关注我的博客和github。如果有任何意见和建议,希望大家多多和我交流呀O(∩_∩)O~

⑤ESP8266 开发学习笔记_By_GYC 【ESP8266 IDF框架 使用C++编程】相关推荐

  1. ⑦ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 DHT11 温湿度传感器】

    目录 一.准备材料 二.硬件连接 三.软件编程 1.修改工程名 2.添加组件 3.编程 4.反馈结果 5.核心代码 四.总结 ⑦ ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 D ...

  2. ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】

    目录 ② ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)] 一.驱动ws2812遇到的问题 二.可能的方案 三.具体实现 四.测试程 ...

  3. ① ESP8266 开发学习笔记_By_GYC 【更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印】

    ① ESP8266 开发学习笔记_By_GYC [更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印] 在我们日常的开发过程中,经常使用到的一个功能就是串口打印功能.在ESP826 ...

  4. ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】

    ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...

  5. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  6. ③ESP8266 开发学习笔记_By_GYC 【虚拟机Ubuntu系统的安装】

    目录 ③ESP8266 开发学习笔记_By_GYC [虚拟机Ubuntu系统的安装] 一.获取最新稳定版本的Ubuntu系统安装包. 二.软件安装 三.接下来 ③ESP8266 开发学习笔记_By_G ...

  7. ⑧ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 BH1750 光强传感器】

    目录 一.BH1750是什么 二.驱动原理&代码 关于IIC BH1750驱动 三.结语 本章介绍 在ESP8266上使用IIC总线驱动BH1750光强传感器的方法. 一.BH1750是什么 ...

  8. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  9. Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示

    Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...

最新文章

  1. python语言最适合的应用领域是_Python语言及其应用领域研究
  2. Activity Stack
  3. WebJars 进行 css js 资源文件管理
  4. 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...
  5. tomcat服务器访问网址组成
  6. ORACLE基础应用学习-- 各种故障的恢复方法总结
  7. 业务模块化打造单体和分布式部署同步支持方案
  8. 前端学习(2662):vue3.0的todolist制作演示
  9. c# npoi 2.5版本设置字体加粗_Python帮你做Excel——格式设置与画图
  10. Win32环境下动态链接库(DLL)编程原理
  11. 51NOD-1027 大数乘法【大数】
  12. clearcase Commands
  13. win10pe命令打开计算机,win10系统制作PE启动盘的操作方法
  14. linux串口编程(termios结构体说明)
  15. ov5640帧率配置_码率、帧率、分辨率对监控有什么影响?怎么调更合适?
  16. Oracle语法限制,in内元素数量必须不大于1000
  17. 获取鼠标图片和鼠标位置的方法
  18. 关于“wuauclt.exe”病毒的清理
  19. [置顶] 【游戏产业的5年之变】
  20. 粒子群算法python实现: 带活化因子

热门文章

  1. 读书笔记——Flutter实战
  2. douban下载图片
  3. 【Python气象绘图临摹】处理数据(上):读入输出nc数据、截取夏季/冬季数据、ButterWorth带通滤波、计算方差
  4. Ubuntu 18.04中切换中英文输入法的快捷键设置
  5. 3D数学基础:Matrix4*3类代码清单
  6. DataBinder.Eval方法研究
  7. Catlike Coding Unity教程系列 中文翻译 Basics篇(二)Building a Graph
  8. VNPY官方发布VNTrader,VNPY性能提升380%,python的便捷,C++性能加持, 期货CTP接口Python和PyQT框架
  9. 通过 Windows XP Embedded 设备更新代理应用 QFE
  10. Java 根据EXCEL下标获取EXCEL的列名