在C ++中调用mmap,使用Clang进行编译

时间:2018-10-08 18:32:45

标签: c++ clang 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版本中,我删除了静态演员表,它将起作用。

0 个答案:

没有答案