1

avr-gcc に問題があります。エラーが繰り返し発生します:

`__eerd_block' への未定義の参照

これはマクロと呼ばれます

EELOAD(s)およびEESAVE(s) (sは uint、structs、eccc... の構造体)

EELOAD(s)EESAVE(s )の定義は次のとおりです。

#define EELOAD( s ) eeprom_read_block( &s, s##_eeprom, sizeof(s) )
#define EESAVE( s ) eeprom_write_block( &s, (void*) s##_eeprom, sizeof(s) )

s##_eepromが何であるか、または がどのように変換されているかを知りたいのです##が、それは住所である必要がありますが、これを変更する方法や機能させる方法がわかりません。

4

1 に答える 1

1

##2 つのトークンを接着するために使用されます。に置き換えEELOAD(foo)られeeprom_read_block(&foo, foo_eeprom, sizeof(foo))ます。## の詳細については、こちらを参照 してください。マクロ自体に関しては、foo_eeprom は EEPROM 空間からの有効なアドレスである必要があります。コードをコンパイルするには、これをどこかに定義する必要があります。

于 2014-04-24T08:36:00.253 に答える