Arduino 例程编译错误
问题描述
error: unknown type name 'uint_farptr_t'; did you mean 'uint_fast8_t'?
中午午觉醒来本来打算试试arduino,第一次打开arduino,想试试手,做个led小灯
但是,发现报错,哪怕新创建文件,自己带的例程都会报错…
Arduino:1.8.10 (Windows 10), 开发板:"Arduino/Genuino Uno"
In file included from D:\code_tool\arduino_ide\Arduino\hardware\arduino\avr\cores\arduino\WInterrupts.c:30:0:
d:\code_tool\arduino_ide\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:1529:25: error: unknown type name 'uint_farptr_t'; did you mean 'uint_fast8_t'?
extern size_t strlen_PF(uint_farptr_t src) __ATTR_CONST__; /* program memory can't change */
^~~~~~~~~~~~~
uint_fast8_t
d:\code_tool\arduino_ide\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:1545:26: error: unknown type name 'uint_farptr_t'; did you mean 'uint_fast8_t'?
extern size_t strnlen_PF(uint_farptr_t src, size_t len) __ATTR_CONST__; /* program memory can't change */
^~~~~~~~~~~~~
uint_fast8_t
...此处省略无数行类似报错
exit status 1
为开发板 Arduino/Genuino Uno 编译时出错。
在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
去arduino中文社区找了半天,也没找到啥合适的解决方法,有让换IDE的,
结果1.8.10,1.8.9,1.8.8,1.8.5四个版本试了都没有用,网上一堆帖子都是待解决…
于是乎陷入沉默…然后下午上完马原继续查找问题
问题解决
问题都出在uint_farptr_t 变量上,当时在pgmspace.h文件里找到了这个变量,但是不知道怎么解决
最后不知道在哪篇帖子里面,搜到了一个链接,写个博客防止自己忘了,不知道为啥16年贴出来的解决方法,网上还是一堆未解决…
原因是:
uint_farptr_t
变量在inttypes.h
中定义了。
但是编译器不知道为什么找不到inttypes.h
文件,于是导致了以上问题
解决方法
返回pgmspace.h
的上级目录,也就是
\arduino\hardware\tools\avr\avr\include\
文件夹下找到inttypes.h
文件
将文件复制到pgmspace.h
目录下,也就是
\arduino\hardware\tools\avr\avr\include\avr\
文件夹下
打开文件pgmspace.h
使用ctrl+F
查找inttypes.h
(PS:其实就在前几行)
并且将#include<inttypes.h>
改为#include<avr/inttypes.h>
,再编译就可以解决了。
这样问题就解决了