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

##用于将两个令牌粘合在一起。所以EELOAD(foo)将被替换为eeprom_read_block(&foo, foo_eeprom, sizeof(foo)). 您将在此处找到有关## 的更多信息 至于宏本身,foo_eeprom 应该是来自 EEPROM 空间的有效地址。您应该在某处定义此代码以编译代码。

于 2014-04-24T08:36:00.253 回答