在开发某NFC驱动过程中,包含某个标准库中的头文件后,编译工程后喜提几十个error: #134: expected a field name
。网上搜索一番发现该错误是因为定义冲突导致的,有点类似于重定义。查看开始的几个出错位置后,发现出错行中均有DMAC->STATUS
的身影,遂锁定STATUS
。在全工程范围内以STATUS
为关键词进行搜索后得到如下结果:
typedef struct {
// ......
__IO uint32_t STATUS;
} DMAC_Typedef;
#define STATUS 0xFFE7
前文中的DMAC
就是struct DMAC_Typedef
类型的结构体变量,在DMAC->STATUS
进行解引用是就出现了上述错误。
定位到了问题出现的位置及原因,解决方案也很简单,将结构体中的成员变量或者宏定义更换一个名称即可。