gpt4 book ai didi

memory-management - Arduino 的 "F()"实际上是做什么的?

转载 作者:行者123 更新时间:2023-12-03 13:28:01 28 4
gpt4 key购买 nike

我问了 similar question之前,但我意识到我无法对宏观和模板性做出正面或反面。我是一名 C(而不是 C++)程序员。
F() 实际上是做什么的?什么时候把字符塞进 pgmem (flash)?它什么时候从 pgmem 中提取字符?它会缓存它们吗?它如何处理低内存情况?

最佳答案

没有涉及模板,只有函数重载。 F()宏做了两件事:

  • 用途 PSTR确保文字字符串存储在 flash memory 中(代码空间而不是数据空间)。然而,PSTR("some string")无法打印,因为它会收到一个简单的 char *它表示存储在闪存中的字符串的基地址。取消引用该指针将访问来自数据中相同地址的一些随机字符。这就是为什么F()还...
  • 转换 PSTR() 的结果至 __FlashStringHelper* . print等功能和 println过载,因此在收到 __FlashStringHelper* 时论据,他们正确地取消引用闪存中的字符。
  • 关于memory-management - Arduino 的 "F()"实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597437/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com