在C中MAP_ANON和MAP_ANONYMOUS都没有声明sys / mmap

这是我的mman.h文件,包含在/usr/include/sys/

http://pastebin.com/FZpHwKMC

不知何故, mmap()似乎是被定义的(并且可以与标志0和读/写保护一起使用),但不是MAP_ANON MAP_ANONYMOUS ,如下所示:

 #include <sys/mman.h> int a = MAP_ANON; /* compile error */ int b = MAP_ANONYMOUS; /* also compile error */ 

我不知道可能是错的。 我正在编译使用这个makefile:

http://pastebin.com/R1V2edmf

编辑:原来, MAP_ANONYMOUSmacros定义在/usr/include/bits/mman.h只有 __USE_MISC定义…

任何帮助将是了不起的!

如果您使用GCC,出现这种情况的一个常见原因是您没有使用GNU C标准。 尝试编译,例如, -std=gnu11 ,看看是否解决了这个问题。

有关GCC的语言标准的更多信息可以在这里找到。

海湾合作委员会也提供了一个非常详尽的清单,确切地说他们在这里提供的扩展。

此外,作为一个方面说明,最好使用MAP_ANONYMOUS而不是MAP_ANON ,因为后者已被弃用(根据man mmap )。