Arduino 1.0.6和Teensy 3.1的Flash.h错误(Teensyduino,版本1.20)

时间:2014-12-01 21:46:49

标签: arduino teensy

我一直在使用来自(http://arduiniana.org/libraries/flash/)版本5的Flash.h库与Arduino 1.0.5和teensy 3.1没有任何问题。我不得不升级到1.0.6版本,现在我收到了这个错误

[removed path from message]
/.../libraries/Flash/Flash.h: In member function 'char* _FLASH_STRING::copy(char*, size_t, size_t) const':
/.../libraries/Flash/Flash.h:79:44: error: operands to ?: have different types 'int' and 'char*'

这是flash.h中的代码

char *copy(char *to, size_t size = -1, size_t offset = 0) const 
  { 
    return size == -1 ?
      strcpy_P(to, _arr + offset) : strncpy_P(to, _arr + offset, size);
  }
乍一看我可以看到操作数正在比较strcpy和strncpy,它们都返回char *所以我不确定为什么它认为一个是int。

此页面提供了有关使用http://tuxgraphics.org/common/src2/article12051/avr-libc-user-manual/manual/group__avr__pgmspace.html

的两个函数的参考资料

任何帮助都将被理解为什么是问题。库测试适用于vailla Arduino 1.0.6,但是当我安装Teensyduino版本1.20并尝试编译为teensy 3.1时,我得到了这个错误。如果我把它编译成Arduino Uno就行了。

提前致谢

2 个答案:

答案 0 :(得分:1)

我在PJRC论坛上找到了答案。我应用了代码更改,它对我有用。 参考网址:http://forum.pjrc.com/threads/26156-Teensy-3-1-and-TinyWebServer-Library?highlight=flash.h

更改
char *copy(char *to, size_t size = -1, size_t offset = 0) const 
{ 
  return size == -1 ?
  strcpy_P(to, _arr + offset) : strncpy_P(to, _arr + offset, size);
}

void *copy(char *to, size_t size = -1, size_t offset = 0) const 
{ 
if (size == -1) strcpy_P(to, _arr + offset);
 else strncpy_P(to, _arr + offset, size);
}

希望这有助于使用flash.h库的人

答案 1 :(得分:1)

似乎青少年图书馆中存在一个错误。

您可以对其进行编辑以修复编译错误。

http://forum.pjrc.com/threads/26676-Teensy3-x-strncpy_P()-bug?p=54965

注意:即使更改了代码和teensy3 avr标题后,我也无法运行Flash演示。