⑤ESP8266 开发学习笔记_By_GYC 【ESP8266 IDF框架 使用C++编程】
⑤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++编程】相关推荐
- ⑦ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 DHT11 温湿度传感器】
目录 一.准备材料 二.硬件连接 三.软件编程 1.修改工程名 2.添加组件 3.编程 4.反馈结果 5.核心代码 四.总结 ⑦ ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 D ...
- ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】
目录 ② ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)] 一.驱动ws2812遇到的问题 二.可能的方案 三.具体实现 四.测试程 ...
- ① ESP8266 开发学习笔记_By_GYC 【更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印】
① ESP8266 开发学习笔记_By_GYC [更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印] 在我们日常的开发过程中,经常使用到的一个功能就是串口打印功能.在ESP826 ...
- ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】
⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...
- ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】
目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...
- ③ESP8266 开发学习笔记_By_GYC 【虚拟机Ubuntu系统的安装】
目录 ③ESP8266 开发学习笔记_By_GYC [虚拟机Ubuntu系统的安装] 一.获取最新稳定版本的Ubuntu系统安装包. 二.软件安装 三.接下来 ③ESP8266 开发学习笔记_By_G ...
- ⑧ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 BH1750 光强传感器】
目录 一.BH1750是什么 二.驱动原理&代码 关于IIC BH1750驱动 三.结语 本章介绍 在ESP8266上使用IIC总线驱动BH1750光强传感器的方法. 一.BH1750是什么 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示
Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...
最新文章
- python语言最适合的应用领域是_Python语言及其应用领域研究
- Activity Stack
- WebJars 进行 css js 资源文件管理
- 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...
- tomcat服务器访问网址组成
- ORACLE基础应用学习-- 各种故障的恢复方法总结
- 业务模块化打造单体和分布式部署同步支持方案
- 前端学习(2662):vue3.0的todolist制作演示
- c# npoi 2.5版本设置字体加粗_Python帮你做Excel——格式设置与画图
- Win32环境下动态链接库(DLL)编程原理
- 51NOD-1027 大数乘法【大数】
- clearcase Commands
- win10pe命令打开计算机,win10系统制作PE启动盘的操作方法
- linux串口编程(termios结构体说明)
- ov5640帧率配置_码率、帧率、分辨率对监控有什么影响?怎么调更合适?
- Oracle语法限制,in内元素数量必须不大于1000
- 获取鼠标图片和鼠标位置的方法
- 关于“wuauclt.exe”病毒的清理
- [置顶] 【游戏产业的5年之变】
- 粒子群算法python实现: 带活化因子
热门文章
- 读书笔记——Flutter实战
- douban下载图片
- 【Python气象绘图临摹】处理数据(上):读入输出nc数据、截取夏季/冬季数据、ButterWorth带通滤波、计算方差
- Ubuntu 18.04中切换中英文输入法的快捷键设置
- 3D数学基础:Matrix4*3类代码清单
- DataBinder.Eval方法研究
- Catlike Coding Unity教程系列 中文翻译 Basics篇(二)Building a Graph
- VNPY官方发布VNTrader,VNPY性能提升380%,python的便捷,C++性能加持, 期货CTP接口Python和PyQT框架
- 通过 Windows XP Embedded 设备更新代理应用 QFE
- Java 根据EXCEL下标获取EXCEL的列名