c++ - Arduino Serial 是在哪里创建的?

标签 c++ serial-port arduino

查看代码我看不到 Serial 是在哪里创建的。有一个 Serial_ 类,但 Serial 似乎不是由它制成的。当程序启动时,您可以开始使用 Serial 就像它已经存在一样,而不必从中创建新对象。我在 arduino 代码中环顾四周,但发现 Serial 可能是其静态成员的任何实际 Serial 类都是空的。有人知道它可能在哪里创建吗?

最佳答案

Arduino 库遵循这种有点不寻常的模式来为您创建对象实例。 Serial 对象是在 HardwareSerial.cpp 文件中创建的,靠近末尾的部分包含各种硬件类型的大量开关:

in HardwareSerial.cpp
// Preinstantiate Objects //////////////////////////////////////////////////////

这些行是变量 Serial 的定义,它是创建对象的地方。

这对某些人很有帮助,因为对象实例 Serial 神奇地存在。

这个库总是包含在核心中,所以你的下一个问题应该是,强制 Serial 不会浪费内存吗?答案是否定的,因为如果您的代码 (.INO) 没有引用 Serial,那么链接器将从最终的二进制文件中删除该对象。引用 Serial 变量的任何一行都将导致链接器将这个预先实例化的对象保留在二进制文件中。

关于c++ - Arduino Serial 是在哪里创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104059/

相关文章:

c++ - 在 UNIX(首选 Linux)上学习 C++ 编程的好书?

解析时间分隔的 UART 数据

使用 RxTx EXCEPTION_ACCESS_VIOLATION 监听 Java COM 端口

c++ - Arduino 上一次中断的多个触发器

arduino - BlackWidow和YellowJacket(Arduino)

c - Arduino Uno - 使用按钮控制和 7 段显示从 1-9 计数并返回的 C 代码

c++ - 包括 ZenLib/Ztring.h 在内的字符串常量之前的预期 unqualified-id

c++ - boost::asio async_write 复杂结构

c++ - 基于结构中 vector 大小的数组初始化 [c++]

python - 在 python3 asyncio 中使用串口