arduino定义引脚为啥要用const??不用可以吗 const int ledPin=13;
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino定义引脚为啥要用const??不用可以吗 const int ledPin=13;相关的知识,希望对你有一定的参考价值。
有两点。第一,防止被修改。const表示本变量为“常变量”,即是一个变量形式的常量,定义后不可修改,只能引用;
第二,节约运行空间。用const修饰的变量,在硬件上会被保存到ROM即“程序存储器”(类似于电脑的硬盘或手机的内存)中。因为用于计算的“随机存储器”RAM(类似于电脑的内存或手机的运存)空间比ROM小很多很多,所以这么做就可以把不用改变值的变量从RAM中移到ROM中,节约系统资源。
————————————————————
其实Arduino定义引脚完全可以使用宏定义,而且宏定义是在预处理阶段,即编译之前,Arduino IDE对代码进行的处理,根本不占用芯片的任何空间。
#define led 13 参考技术A const关键字是防止定义的变量的值被以外修改!
在芯片本身的结构不发生变化的情况下,芯片引脚的序列都是固定的,在代码里面不需要去修改它,所以,安全起见,一般都把它定义为const类型的。
当然,不定义为const类型的也行,不过,如果程序中意外修改了引脚的序列值,会引起程序出错,并且错误很难查!本回答被提问者采纳
为啥要用dbus,如果不用dbus要用啥来代替?
目前dbus 生态系统构建得还是比较广泛的,已经被 kernel 吸收, gtk 和 qt 也封装出high-level的框架。dbus 是 low-level 的消息机制,可以基于dbus 定制开发出自己的 event system. dbus 的性能和具体的技术架构还没有弄清楚(想着也是epoll/poll/select 的reactor)。由 dbus-daemon 为中心化的 C-S ,兼有route,device manager等作用。觉得 dbus 主要的优势在于 接口化(idl / xml)。dbus 最底层无非是 八种 IPC 组合(pipe, socket, msgqueue, sharebuffer,...) ,所以替换dbus 从底层就是socket。如果想使用类似的机制,有各种 msgqueue(zeromq, Java 里的 ActiveMQ, Appach 的 RabbitMQ), 类似的消息中间件还有 Kafka(Scala), libevent, libev, libuv(Node.js)。
各有各的特性,可以根据自己的需求选用。
目前移植 boost 的时候遇到了 asio ,好像和 reactor 架构不一样的一种架构。也可以参考。 参考技术A socket 。之所以用DBus,因为DBUS说:哥传递的不是数据,而是方法。
以上是关于arduino定义引脚为啥要用const??不用可以吗 const int ledPin=13;的主要内容,如果未能解决你的问题,请参考以下文章