符合 C99 标准的 MAP_ANONYMOUS
我有一个使用 mmap 系统调用的应用程序,我在编译它时遇到了几个小时的问题,想知道为什么我得到 MAP_ANON 和 MAP_ANONYMOUS 未声明,我使用了一小部分代码,我看到我可以编译它就好了,所以我尝试了一个基本的编译并且成功了,我发现当你添加 -std=c99 时它失败了。 MAP_ANON 和 MAP_ANONYMOUS 在 C99 标准中无效是否有具体原因?我知道它们不是由 POSIX 定义的,而是由 BSD SOURCE 定义的,所以我只想知道为什么会这样。
I have an application that uses the mmap system call, I was having an issue getting it to compile for hours looking as to why I was getting MAP_ANON and MAP_ANONYMOUS were undeclared, I had a smaller section of code that I used and I saw I could compile it just fine so I tried just a basic compile and that worked, I saw that it fails when you add -std=c99. Is there a specific reason that MAP_ANON and MAP_ANONYMOUS are not valid in the C99 standard? I know that they aren't defined by POSIX but are defined by BSD SOURCE so I just want to know why that is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能需要
-std=gnu99
而不是-std=c99
。 C99 模式明确禁用(大多数)GNU 扩展。我写了一个简单的测试:
在 C99 模式下,它找不到值:
而在 Gnu99 模式下,它找到了:
You probably want
-std=gnu99
instead of-std=c99
. C99 mode explicitly disables (most) GNU extensions.I wrote a simple test:
In C99 mode, it doesn't find the value:
Whereas in Gnu99 mode, it does: