使用mmap()时,从'void*'到'char*'的转换无效

MrD*_*Duk 6 c++ parameters mmap void-pointers

我有以下代码段:

char* filename;
unsigned long long int bytesToTransfer;
int fd, pagesize;
char *data;

fd = open(filename, O_RDONLY);
if (fd==NULL){
    fputs ("File error",stderr);
    exit (1);
}

cout << "File Open: " << filename << endl;

pagesize = getpagesize();
data = mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0);
if (*data == -1) {
    fputs ("Memory error",stderr);
    exit (2);
}

cout << "Data to Send: " << data << endl;
Run Code Online (Sandbox Code Playgroud)

但是当我编译时,我会收到:

错误:从'void*'到'char*'的无效转换[-fpermissive] data = mmap((caddr_t)0,bytesToTransfer,PROT_READ,MAP_SHARED,fd,0);

有人能给我一个暗示什么是错的吗?

use*_*267 7

C++不会执行隐式强制转换void*,您必须将其显式化

data = static_cast<char*>(mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0));
Run Code Online (Sandbox Code Playgroud)