1
#include <WProgram.h>
#include <EEPROM.h>

template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
    const byte* p = (const byte*)(const void*)&value;
    int i;
    for (i = 0; i < sizeof(value); i++)
    EEPROM.write(ee++, *p++);
    return i;
}

template <class T> int EEPROM_readAnything(int ee, T& value)
{
    byte* p = (byte*)(void*)&value;
    int i;
    for (i = 0; i < sizeof(value); i++)
        *p++ = EEPROM.read(ee++);
    return i;
}

コミュニティの皆様、コードで次のエラーが発生します。

EEPROMAnything.h: 関数 'int EEPROM_writeAnything(int, const T&)':
EEPROMAnything.h:6: エラー: '*' トークンの前に初期化子が
必要です EEPROMAnything.h:9: エラー: 'p' はこのスコープ
EEPROMAnythingで宣言されていません.h: 関数 'int EEPROM_readAnything(int, T&)':
EEPROMAnything.h:15: エラー: 'byte' はこのスコープ
EEPROMAnything で宣言されていません.h:15: エラー: 'p' はこのスコープ
EEPROMAnythingで宣言されていません.h:15: エラー: ')' トークン
EEPROMAnything の前にプライマリ式が必要です.h:15: エラー: 'void' の前にプライマリ式が必要です

このセットに欠けているものがわからない。フィードバックをお待ちしております。
ありがとう

4

1 に答える 1

0

何が機能していないかを発見しました

 #include <WProgram.h> 

代わりにする必要があります

 #include <Arduino.h>

コメントコミュニティありがとうございます!

于 2014-06-04T03:58:05.647 に答える