keil中关于 error: #134: expected a field name 的讨论
aside是什么意思出现error: #134: expected a field name这个错误,如果你确定定义了结构体,那一定是名字冲突的问题。
博主这些天尝试将UCGUI(有道英语一种嵌入式图形软件,用它可以制作操作界面,图像等等,用于在显示设备上显示。)移植到STM32上,在移植过程中始终有 error: #134: expected a field name theta的报错。
具体报错为:在匹配 LCD_L0_SetPixelIndex(x0, y, LCD_COLORINDEX);函数时一直出现这一问题。经分析问题出在LCD_COLORINDEX这一参数上。 LCD_COLORINDEX是一个宏定义而来的参数,具体如下:
以下函数为UCGUI源码中的LCDDriver中的匹配函数:
#if (LCD_BITSPERPIXEL <= 8) && (GUI_NUM_LAYERS < 2)touchpanel
#define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex8[0]
#define LCD_COLORINDEX GUI_Context.LCD.aColorIndex8[1]
#define LCD_ACOLORINDEX GUI_Context.LCD.aColorIndex8
#el
#define LCD_BKCOLORINDEX GUI_Context.LCD.aColorIndex16[0]
#define LCD_COLORINDEX GUI_Context.LCD.aColorIndex16[1]
#define LCD_ACOLORINDEX GUI_Context.LCD.aColorIndex16
#endif
其中LCD为定义的共同体
typedef union {
U8 aColorIndex8[2];
U16 aColorIndex16[2];
} LCD_COLORINDEX_UNION;
LCD_COLORINDEX_UNION LCD;
经过三天的迷茫修改,最终出错原因在于,在工程提供的电容屏驱动lcdur.h文件中已经有过对LCD的宏定义。如下:
#define LCD ((LCD_TypeDef *) LCD_BASE)
sara evans在共同体定义中包含LCD
然而在宏定义中:#define LCD ((LCD_TypeDef *) LCD_BASE)拼go也包含LCD
所以出错了!
infamous
张家港在线希望大家可以借鉴!
naturalbeauty综上在定义结构体、共同体时要注意参数名的设置,要特别注意出现重名的现象。
>餐具英文