所以我想使用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>