关于编程的一些思考

简介:

1、其实高级语言和面向过程的语言最求的目标都是一致的,高可复用性,另外,封装性。我发现自己在写C语言的时候,总是不自觉地就引入了高级语言的一些封装性的思想(如以下代码段1所示),而我的同学却总是按着最原始的方式对函数进行命名。学过编译原理的同学就会知道,最原始的C++编译器其实就是将C++转化成C语言,然后用C语言的编译器进行实现的。C++中的类转化成C语言,其实总体的思想就是在函数名上多添加了一个类名,在函数签名上有一些添加信息协助编译器翻译成C语言。代码段1的好处就是里面的函数跟别的C函数库中的函数不容易重合,另外,通过命名提醒调用者这些函数是一类的东西。

复制代码
 1 #ifndef __I2C_H__
 2 #define __I2C_H__
 3 
 4 //========函数区============================================
 5 extern void I2C_start();  //开始信号
 6 extern void I2C_stop();   //停止
 7 extern void I2C_respons();  //应答
 8 extern void I2C_write_byte(unsigned char date);
 9 extern unsigned char I2C_read_byte();
10 extern void I2C_write_address(unsigned char address,unsigned char date);
11 extern unsigned char I2C_read_address(unsigned char address);
12 //========函数区结束============================================
13 #endif
复制代码

 代码段1 加上前缀的C函数

复制代码
 1 extern bit ack;
 2 //起动总线函数
 3 extern void Start_();
 4 //结束总线函数  
 5 extern void Stop_();
 6 //应答子函数
 7 extern void Ack_(bit a);
 8 //字节数据发送函数
 9 extern void  SendByte(unsigned char  c);
10 //有子地址发送多字节数据函数               
11 extern bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) ;
12 //无子地址发送多字节数据函数   
13 extern bit ISendStrExt(unsigned char sla,unsigned char *s,unsigned char no);
14 //无子地址读字节数据函数               
15 extern unsigned char RcvByte();
复制代码

代码段2 没加上前缀的C函数

 

2、硬件调试和软件调试的相同点。对于开发人员来说,能够及时地得到反馈是一件幸福的事情,我初学51单片机和EDA的时候,总是喜欢把整个程序都写完,然后一股脑地进行调试。这其实很打击人的自信心,特别是当你刚刚入门的时候。后来,我想为什么不像用Java或C#开发软件一样,设个断点,弹个窗口?但是keilC的调试工具是在让人蛋疼,因为常常需要跟硬件结合在一起。是软件模拟不来的,但是总是有办法弄一些提示信息的。比如我们在51单品机上面可以弄一个LED、用串口调试来显示软件运行中的信息。

 本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/06/10/3131094.html如需转载请自行联系原作者


kissazi2

相关文章
|
计算机视觉 网络架构
【YOLOv8改进 - 卷积Conv】DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
YOLO目标检测专栏探讨了YOLO的创新改进,如多尺度特征提取的DWRSeg网络。该网络通过区域残差化和语义残差化提升效率,使用DWR和SIR模块优化高层和低层特征。DWRSeg在Cityscapes和CamVid数据集上表现优秀,速度与准确性兼备。论文和代码已公开。核心代码展示了一个包含DWR模块的卷积层。更多配置详情见相关链接。
|
8月前
|
Web App开发 搜索推荐 开发者
浏览器插件上架指南:如何把你的产品搬上浏览器插件市场
在实践了 Chrone、Firefox、Edge、Opera 等 几个主要的插件平台的上架发布工作后,我觉得很有必要把这个过程和思考记录下来,分享给大家,希望能提供一些参考和避坑的经验。我想通过这篇文章,和大家聊聊「为什么我要做这件事」,以及「这个系列文章会包含哪些内容」。我想用一个系列的文章,记录我是如何把 EmojiClick 搬到浏览器插件市场的,也给大家提供一些借鉴经验。
223 19
|
9月前
|
人工智能 并行计算 算法
谷歌量子计算机:开启计算新时代
谷歌量子计算机是现代信息技术的前沿成果,基于量子力学原理构建,具有超越经典计算机处理复杂问题的巨大潜力。谷歌通过研发“悬铃木”处理器等,实现了量子霸权,在量子化学模拟和优化问题求解等领域取得显著成就。尽管面临量子比特稳定性和纠错等挑战,谷歌持续创新,为新时代计算奠定基础。
231 16
|
分布式计算 Java Go
golang和java对比
golang和java对比
359 0
|
存储 Linux Shell
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 挂载文件系统 mount使用教程
⭐⭐⭐【Shell 命令集合 磁盘管理 】Linux 挂载文件系统 mount使用教程
502 0
|
11月前
|
机器学习/深度学习 网络协议 安全
5G 网络的防御利器:抵御分布式拒绝服务攻击
5G 网络的防御利器:抵御分布式拒绝服务攻击
231 0
|
存储 弹性计算 固态存储
阿里云服务器租用价格参考,云服务器收费标准与实时活动价格整理
阿里云服务器租用价格参考,本文更新了阿里云服务器最新的租赁费用,包括云服务器实时的活动价格与云服务器收费标准。经济型e实例云服务器4核16G10M带宽配置30.00元/1个月、90.00元/3个月,独享型通用算力型u1实例2核4G服务器仅需199元1年,轻量云服务器2核2G新用户专享价格61元/1年,计算型c7a实例2核4G配置特惠价625.68元/1年。更多阿里云服务器热门配置活动价格及云服务器租赁费用及活动价格见下文。
阿里云服务器租用价格参考,云服务器收费标准与实时活动价格整理
|
机器学习/深度学习 人工智能 边缘计算
|
XML 设计模式 分布式计算
Kotlin 异步 | Flow 应用场景及原理
Kotlin 异步 | Flow 应用场景及原理
342 0
USB3.0、3.1、3.2...各版本区别
USB3.0、3.1、3.2...各版本区别
3266 0
USB3.0、3.1、3.2...各版本区别