完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是 ESP8266 的新手,正在学习使用该产品。
我做了一个小的 cpp 程序,在编译时出现以下错误: 冲突声明 'typedef int int32_t' 第 80 行,外部位置:c:\espressif\xtensa-lx106-elf\xtensa-lx106-elf\include\stdint .h 之前声明为“typedef long int int32_t”的第 17 行,外部位置:c:\Espressif\ESP8266_SDK\include\c_types.h 看起来有些 东西正在重新定义 int32_t。 我的程序是这样的: #include "espmissingincludes.h" #include extern "C" void user_rf_pre_init(void) { } extern "C" void user_init(void) { os_delay_us(1000); 在 stdint.h 中,我看到以下几行: #if TENSILICA || 1 typedef signed int int32_t; typedef unsigned int uint32_t; #else typedef signed long int32_t; typedef unsigned long uint32_t; #endif 什么是 TENSILICA 以及为什么 int32_ 和 uint32_t 被迫成为 int 的。 有人可以帮我解决这个问题吗? 谢谢你和最好的问候, Wamor |
|
相关推荐
1个回答
|
|
Tensilica是一款微处理器架构和编程语言,它被用于许多不同类型的设备,包括无线路由器、图像处理器等嵌入式系统。
在ESP8266中,它使用Tensilica的L106处理器。在使用编译器时,可能会出现int32_t和uint32_t强制成int的情况。这是因为L106处理器上的编译器有一个问题,无法正确定义int32_t和uint32_t。 为了解决这个问题,可以使用typedef进行重新定义,或者在编译器选项中添加-D__int32_t=int和-D__uint32_t=int选项。这将使编译器将int32_t和uint32_t作为int定义。 在你的代码中,出现了一个冲突声明的问题,这意味着两个不同的文件都定义了相同的类型,可能是因为缺乏头文件保护。你可以尝试添加头文件保护,在文件顶部添加#ifndef和#define指令。例如: #ifndef MY_FILE_H #define MY_FILE_H // your code here #endif // MY_FILE_H 这将确保头文件只被编译一次,避免重复定义的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
142 浏览 1 评论
550浏览 6评论
460浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
442浏览 5评论
444浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:31 , Processed in 0.696562 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号