c++ - 在 C++ 中调用 mmap,使用 Clang 编译
问题描述
我正在尝试在 C++ 中使用 mmap 分配内存并使用 Clang/Clang++ 进行编译,但是当我编译我的代码时出现错误。编码:
// test.cpp
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
int main() {
int *a = static_cast<int*>(mmap(0x20000, sizeof(int), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0));
*a = 13;
return 0;
}
错误:
test.cpp:6:29: error: no matching function for call to 'mmap'
int *a = static_cast<int*>(mmap(0x20000, sizeof(int), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0));
^~~~
/usr/include/x86_64-linux-gnu/sys/mman.h:57:14: note: candidate function not viable: no known conversion from 'int' to 'void *' for 1st argument
extern void *mmap (void *__addr, size_t __len, int __prot,
^
1 error generated.
使用 Clang 或 Clang++ 编译会产生相同的错误。有谁知道在 C++ 中调用 mmap 的正确方法?如果它是 *.c 文件,完全相同的程序可以正常工作。
编辑:我的意思是在 *.c 版本中,我删除了静态演员表,它会起作用。
解决方案
推荐阅读
- javascript - getCurrentPosition() 跨平台项目
- sql - ORACLE 提取表中不同键的最后一条数据
- sqlite - Sqlite 错误:外键约束失败
- python - 基于相邻元组值加入python列表元组元素
- javascript - 在 Google Optimize 中插入动态 onClick 事件脚本
- rational-team-concert - 如何只接受变更集中的特定文件
- python - 错误的文件描述符python套接字
- django - 在 Google 表格中处理竞争条件
- javascript - 如何使用用户选择的变量获得烧瓶终点?
- python - 序列化 DRF 中的相关字段