c - MAP_ANON 和 MAP_ANONYMOUS 都未在 C 中为 sys/mmap 声明

标签 c unix memory

这是我的 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_ANONYMOUS 宏是在 /usr/include/bits/mman.h 中定义的,但如果__USE_MISC 定义...

任何帮助都会很棒!

最佳答案

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

可以找到有关 GCC 语言标准的更多信息 here .

GCC 还提供了一个非常详尽的列表,详细列出了它们提供的扩展 here .

此外,作为旁注,最好使用 MAP_ANONYMOUS 而不是 MAP_ANON,因为后者已被弃用(根据 man mmap ).

关于c - MAP_ANON 和 MAP_ANONYMOUS 都未在 C 中为 sys/mmap 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817309/

相关文章:

unix - 当同时涉及两个命令时,如何将输出重定向到两个不同的文件?

c - 在循环中使用 read 和 malloc 时防止 Ctrl+C 后泄漏

c - 如何使用嵌入式 Mongoose 实现 SSL

c - 即使字符串以 null 结尾,程序也会输出奇怪的字符

linux - 如何缩小 UNIX/LINUX 下进程列表输出的范围

Java Unix 字符编码

使用复制构造函数时 C++ 程序崩溃,动态内存可能是罪魁祸首?

c++ - C/C++ 转换为程序集,低级内存行为 : how is it done?

c++ - 在 C++ 中存储对对象的引用需要多少内存?

c - 错误: expected expression before