模块
模块化,有蓝牙和WiFi、电机、传感器、显示屏等模块,这些模块都是由官方提供的api或者sdk,可以高效的开发,当初我第一次玩esp32开发板的时候,看到esp32+摄像头二合一的模块,这个代码没想到官方库都有提供,直接使用arduion就可以创建实例,可以快速实现拍照和上传,这就是模块化的好处了。搞嵌入式,最常说就是模块化编程了,就是高内聚,低耦合,通过内核来分配资源。
函数指针
可以用纯c写一个结构体,里面全都是函数指针,这样就可以实现api,方便其他程序调用,而且也可以通过外部来进行修改指向,这个是一个非常好用的技巧了。
对了,这里分享一个,我开发遇到的有意思的东西,我用c写了一个函数指针,去指向一个类实例里面的函数,发现是不能指向,提示要static的类方法才能被指向,这个是为什么呢?
非静态成员函数依赖于具体的类实例,它们有一个隐含的this
指针指向类的实例。因此,它们在底层的函数签名上是不同的,无法直接用普通的函数指针去指向它们。静态成员函数与类实例无关,它们不依赖于任何this
指针,因此它们在行为上与普通的全局函数相似。所以,可以用普通的函数指针指向静态成员函数。
git子模块
一定要知道有一个主模块,然后再添加git submodule add
总结
模块,高内聚低耦合,一个代码的风格和框架是可以看出来一个人的经验和水平的,不过很多人都是凭感觉来写的,感兴趣的可以看一下前面的博客,有关于内核和耦合的,也可以自行搜索。模块的制作确实有点麻烦,不过制作好之后就非常简单了。