构建STM32CubeIDE工程时出现的问题

../Src/sysmem.c:63:1: error: unknown type name 'caddr_t'

../Src/sysmem.c:76:25: error: 'caddr_t' undeclared (first use in this function)

../Src/sysmem.c:81:25: error: expected ';' before 'prev_heap_end'

make: *** [Src/subdir.mk:43: Src/sysmem.o] Error 1

完整的错误信息如下:

这是在链接阶段出现的错误。提示找不到caddr_t这种类型名。

具体出现这种问题的原因并不清楚,但是有解决方法。

解决方法:

双击错误提示,跳到报错的文件【sysmem.c】

在头文件包含处加上一句【#include <sys/stat.h>】或者【#include <sys/types.h>】即可

因为在【types.h】里定义了【caddr_t】,【typedef char * caddr_t;】,所以【#include <sys/types.h>】可以解决问题

【stat.h】里【#include <sys/types.h>】,所以【#include <sys/stat.h>】也可以解决问题

我查到的一些信息说【caddr_t】是一种非常古老的类型,可能在【void*】被创建出来之前就存在了,似乎【caddr_t】与【void*】的作用是相同的。但是现代代码已经不使用【caddr_t】了。

但是我在【types.h】却里面看到【caddr_t】是用来代替【char*】的,这就有矛盾了。

如果有朋友知道为什么,可以在评论区说说,十分感谢。

猜你喜欢

转载自blog.csdn.net/weixin_63096487/article/details/133759671