mman.h 确实导入了 mmap 函数但未能导入 mremap

mman.h does import mmap function but fails to import mremap

所以我想使用 mremap 函数更轻松地处理内存映射文件,但出现隐式声明错误

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

我确实包含了所需的库,如果我没有的话

addr = mmap(NULL, len_file, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);

会引发同样的错误。

我当前的 header 具有按要求指向的库

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

这里的顺序不正确:

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

您必须在 之前定义 _GNU_SOURCE ,包括 headers:

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