我有一个使用mmap系统调用的应用程序,我有一个问题需要编译几个小时才能看到为什么我得到MAP_ANON和MAP_ANONYMOUS未声明,我使用了一小段代码,我看到了我可以编译它就好了,所以我尝试了一个基本的编译和工作,我看到它添加-std = c99时失败。MAP_ANON和MAP_ANONYMOUS在C99标准中无效是否有特定原因?我知道它们不是由POSIX定义的,但是由BSD SOURCE定义,所以我只想知道为什么。
发布于 2018-05-23 09:59:24
你可能想要-std=gnu99
而不是-std=c99
。C99模式显式禁用(大部分)GNU扩展。
我写了一个简单的测试:
#include <sys/mman.h>
int a = MAP_ANONYMOUS;
在C99模式下,它找不到值:
$ gcc -std=c99 -c d.c
d.c:3:9: error: ‘MAP_ANONYMOUS’ undeclared here (not in a function)
而在Gnu99模式下,它确实:
$ gcc -std=gnu99 -c d.c
https://stackoverflow.com/questions/-100001357
复制相似问题