../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*】的,这就有矛盾了。
如果有朋友知道为什么,可以在评论区说说,十分感谢。