今天移植又碰到了这个__packed定义的事情,记录一下,方便下次查阅。
一般在库中,会定义如下
/* 编译器差异化定义 */
#if defined ( __GNUC__ )
#ifndef __weak
#define __weak __attribute__((weak))
#endif /* __weak */
#ifndef __packed
#define __packed __attribute__((__packed__))
#endif /* __packed */
#endif /* __GNUC__ */
如果在
中又勾选了GNU extension,那么问题就会出来
attribute "__packed__" does not apply ,
那么解决方式也很简单去掉 这个勾选或者去掉SDK里面的定义即可。
2024.05.29
1.今天升级keil后,发现又出现这个问题,用上次的方法不行,原来是另外一个中间件也出现了
上述定义,导致失败,这些直接删除(XX_app_conf.h)里面的定义,编译OK了,所以再出现类似情况,需要查看有无重复定义出现的情况。