你如何在arduino代码中转发声明?

时间:2015-06-09 12:06:47

标签: macos arduino

我正在尝试编译其他人写的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编译器处理得不好。我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

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

typedef uint32_t PROGMEM prog_uint32_t;

或包含正确的头文件,如果还缺少其他内容。

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

答案 1 :(得分:1)

自从制作了zip包之后,该项目的回购已经更新。

该行现为:

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 :(得分:0)

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

struct b;