【问题标题】:How do you do forward declarations in arduino code?您如何在 arduino 代码中进行前向声明?
【发布时间】:2015-06-09 12:06:47
【问题描述】:

我正在尝试为其他人编写的 arduino 编译极坐标图代码。据我所知,代码本身是正确的,在添加运行它所需的库后,我收到此错误消息。

polargraph_server_polarshield.ino:109:16:错误:“prog_uint32_t”没有命名类型
在 /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/cores/arduino/Arduino.h:28:0 包含的文件中, 来自/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/avr/libraries/SPI/SPI.h:17, 来自 polargraph_server_polarshield.ino:47:
util.ino:在函数“long unsigned int crc_update(long unsigned int, byte)”中:
util.ino:392:31:错误:“crc_table”未在此范围内声明
util.ino:394:31:错误:“crc_table”未在此范围内声明
编译出错。

我听说您需要设置前向声明,因为它在其数据类型中使用了两个词,而官方的 arduino 编译器不能很好地处理这个问题。我该怎么做呢?

【问题讨论】:

    标签: macos arduino


    【解决方案1】:

    自 zip 包制作以来,该项目的 repo 已更新。

    该行现在显示为:

    const uint32_t PROGMEM crc_table[16] = {
    

    (https://github.com/euphy/polargraph_server_polarshield/blob/master/polargraph_server_polarshield.ino#L108)

    当 Arduino IDE 1.6 出现并打破了一堆新事物时,需要进行此更改!

    我已经更新了代码包以包含:

    • crc_table 定义修复
    • UTFT 库更新到 v2.81(出于同样的原因 - Arduino IDE 1.6 兼容性)

    (https://github.com/euphy/polargraphcontroller/releases/tag/2015-07-15-21-25)

    【讨论】:

      【解决方案2】:

      您提供的内容中有两个错误。首先,由于某种原因,头文件中没有包含 prog_uint32_t 的声明。所以你可能需要添加:

      typedef uint32_t PROGMEM prog_uint32_t;
      

      如果缺少其他任何内容,请包含正确的头文件。

      您必须发布 util.ino 草图的代码才能获得第二个错误的帮助。

      【讨论】:

        【解决方案3】:

        看起来您正在使用简单的 C 进行编码;在这种情况下,它是一个简单的 C 前向声明,例如:

        struct b;
        

        【讨论】:

        • @LinkReincarnate:只有你能回答,这是你的前瞻声明。您需要它的地方!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多