arduino编译错误,连blink都不行,是不是系统配置出错了?新电脑问题,旧电脑上都没有

错误码
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\WInterrupts.c:30:0:

c:\program files (x86)\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
源码就是示例blink,就不贴了

当前的意思是 uint_farptr_t没有这个类型,只有uint_fast8_T追问

能麻烦具体解释一下是什么意思吗?类型是啥,数据类型吗?新手上路不太懂

追答

你应该是移植了别的代码
在64位的机器上,intptr_t和uintptr_t分别是long int、unsigned long int的别名;在32位的机器上,intptr_t和uintptr_t分别是int、unsigned int的别名。

那么为什么要用typedef定义新的别名呢?我想主要是为了提高程序的可移植性(在32位和64位的机器上)。很明显,上述代码会根据宿主机器的位数为intptr_t和uintptr_t适配相应的数据类型。

另外,如注释所言,定义这两个数据类型别名也是为了“void *”指针。

在C语言中,任何类型的指针都可以转换为void *类型,并且在将它转换回原来的类型时不会丢失信息。

追问

好像懂了,是指找不到对应数据类型对吗,用的官网安装包和微软商店的app报错都是这个,代码就是软件自带的示例程序,我因为学c要用codeblocks,用mingw装过几个要用的(应该是)编译器,有可能是这几个造成的的冲突?或者说这只是计算机无法识别这两种数?

typedef定义是为了提高可移植性,但即使是这样Arduino ide的编译环境仍然不认识这类新定义的数据....很奇怪,明明是它自己的开发者给出的示例代码...谢谢您,我去找找有没有方法解决,如果可以的话麻烦帮帮忙看一看行吗

解决了,定义库是有的,按定义数据的库文件的导向库的路径明明就在的定义库文件,ide软件就是看不见,在把定义库和导向库改到了同一文件夹里再在导向里加一个路径就解决了。

温馨提示:答案为网友推荐,仅供参考
相似回答