【发布时间】:2022-01-15 14:57:12
【问题描述】:
这些属性不兼容吗?地址属性似乎被忽略,不发出警告(-Wall)。
(作为参考,EEMEM 在 eeprom.h 中定义为:#define EEMEM __attribute__((section(".eeprom")))。)
使用如下声明:
uint8_t storedFlags EEMEM __attribute__((address (100)));
(对于所有其他人也是如此)导致变量以链接器喜欢的任何顺序放置,而忽略我的属性。属性的顺序没有影响。
我知道首选方法(创建节并将其位置传递给链接器)。我只是想暂时推开它们,因为我正在积极开发并在 EEPROM 中添加和删除分配;我宁愿事情不要在其他所有版本中移动,这样我就不必每次都从默认值重新编程 EEPROM。最糟糕的是,我敢肯定我以前就做过这个,并且成功了。版本差异?巧合的任务? (我有 GCC 3.4 和 8.1,不确定那个项目使用的是什么;我使用的是 8.1。)
【问题讨论】:
标签: c gcc attributes avr-gcc