2014-12-01 1 views
0

Я использовал библиотеку Flash.h от (http://arduiniana.org/libraries/flash/) версии 5 с Arduino 1.0.5 и teensy 3.1 без каких-либо проблем. Мне пришлось обновить до версии 1.0.6, и теперь я получаю эту ошибкуОшибки Flash.h с Arduino 1.0.6 и Teensy 3.1 (Teensyduino, Version 1.20)

[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, Version 1.20 и пытаюсь скомпилировать для teensy 3.1, я получаю эту ошибку. Если я скомпилирую его в Arduino Uno, это сработает.

Заранее спасибо

ответ

0

Я нашел ответ на это на PJRC форуме. Я применил изменения кода, и это сработало для меня. ссылки URL: 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

0

И мне кажется, что есть ошибка в teensy библиотека.

Вы можете отредактировать его, чтобы исправить ошибку компиляции.

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

Примечание: Даже после внесения изменений в код и teensy3 Avr заголовков я не могу запустить флэш-демо.