我遇到了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
是什么,或##
如何翻译,它应该是一个地址,但我无法弄清楚如何修改或如何工作此
答案 0 :(得分:1)
##
用于将两个令牌粘合在一起。因此EELOAD(foo)
将替换为eeprom_read_block(&foo, foo_eeprom, sizeof(foo))
。您可以在here找到有关##的更多信息
至于宏本身,foo_eeprom应该是EEPROM空间中的有效地址。你应该在某处定义这个代码来编译。