EEPROM写入和读取未知指令

时间:2014-04-24 08:21:44

标签: gcc c-preprocessor avr eeprom stringification

我遇到了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是什么,或##如何翻译,它应该是一个地址,但我无法弄清楚如何修改或如何工作此

1 个答案:

答案 0 :(得分:1)

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