所以我想使用mremap函数来更容易地处理内存映射文件,但是会引发一个隐式声明错误

addr = mremap(addr, len, len_file, MREMAP_MAYMOVE);

如果我没有写这行的话,我确实包括了所需的库
addr = mmap(NULL, len_file, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);

会引起同样的错误。
我当前的头中有按要求指向的库
#include <sys/mman.h>
#define _GNU_SOURCE

最佳答案

这里的顺序不正确:

#include <sys/mman.h>
#define _GNU_SOURCE

在包含标题之前,必须定义_GNU_SOURCE
#define _GNU_SOURCE
#include <sys/mman.h>

10-08 19:17