发 帖  
原厂入驻New
stm32程序用keil编译程序中出现下面问题
92 Keil STM32
分享
我在用keil编译程序中出现了问题。提示是这样的。


..\Network\esp8266.h(36): error: #3092: anonymous unions are only supported in --gnu mode, or when enabLED with #pragma anon_unions所涉及的内容是


extern struct STRUCT_USARTx_Fram { char Data_RX_BUF[ RX_BUF_MAX_LEN ]; union { __IO uint16_t InfAll; struct { __IO uint16_t FramLength :15; __IO uint16_t FramFinishFlag :1; } InfBit; }; } strPc_Fram_Record, strEsp8266_Fram_Record;改了好多地方,都没办法消除错误,网上也没有找到解决的办法。请教大神如何解决。。。在线等。。。
0
2020-4-16 05:55:42   评论 分享淘帖 邀请回答

相关问题

9个回答
本帖最后由 MOP 于 2016-11-9 21:06 编辑

嗨,在您的標頭檔esp8266.h中,前面加入


#pragma anon_unions因為有使用到unions,這涉及同一個Memory空間不同型別的宣告,MDK的ARM C Compiler會特別處理,GCC則否,要特別注意這點

以上希望對您有用:)
2020-4-16 08:30:25 评论

举报

云汉达人
  本帖最后由 汉云 于 2016-11-9 20:43 编辑

方法一:
添加#pragma anon_unions



方法二:
给union加名字
2020-4-16 08:40:24 评论

举报

云汉达人

luomandike 发表于 2016-11-9 21:00
你好,我试过你的方法一,会提示新的错误。。

我又试了你的方法2,还是有错误。。

你把工程传上来看看。
2020-4-16 08:56:11 评论

举报

云汉达人

luomandike 发表于 2016-11-9 21:00
你好,我试过你的方法一,会提示新的错误。。

我又试了你的方法2,还是有错误。。

把 extern 去了

2020-4-16 09:09:28 评论

举报

MOP 发表于 2016-11-9 20:31
嗨,在您的標頭檔esp8266.h中,前面加入
因為有使用到unions,這涉及同一個Memory空間不同型別的宣告,MDK的ARM ...

我试过了,添加这个代码后会出现新的错误

..\object\onenetdemo.axf: Error: L6218E: Undefined symbol strEsp8266_Fram_Record (referred from esp8266.o). Target not created
2020-4-16 09:18:20 评论

举报

汉云 发表于 2016-11-9 20:40
方法一:
添加#pragma anon_unions


你好,我试过你的方法一,会提示新的错误。。

..\object\onenetdemo.axf: Error: L6218E: Undefined symbol strEsp8266_Fram_Record (referred from esp8266.o).  我又试了你的方法2,还是有错误。。

..\Network\esp8266.c(217): error: #136: struct "STRUCT_USARTx_Fram" has no field "InfBit" ..\Network\esp8266.c(218): error: #136: struct "STRUCT_USARTx_Fram" has no field "InfBit" ..\Network\esp8266.c(219): error: #136: struct "STRUCT_USARTx_Fram" has no field "InfBit" ..\Network\esp8266.c(220): error: #136: struct "STRUCT_USARTx_Fram" has no field "InfBit" "..\object\onenetdemo.axf" - 4 Errors, 0 Warning(s). Target not created
2020-4-16 09:26:27 评论

举报

汉云 发表于 2016-11-9 21:05
你把工程传上来看看。

我在论坛上下载的代码,有自己修改的一部分,但是不加这个结构体程序就是没有错误的。
2020-4-16 09:35:54 评论

举报

汉云 发表于 2016-11-9 19:57
把定义放在C文件中。
下面是更改好的。

万分感谢!!:lol
2020-4-16 09:44:57 评论

举报

本帖最后由 MOP 于 2016-11-9 21:57 编辑


luomandike 发表于 2016-11-9 21:33
万分感谢!!
您原來的Code如果用extern的話,esp8266.c檔案要再定義,在前面加入以下就可了

struct STRUCT_USARTx_Fram strPc_Fram_Record, strEsp8266_Fram_Record;
2020-4-16 10:04:21 评论

举报

只有小组成员才能发言,加入小组>>

262个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表