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);
有人能给我一个暗示什么是错的吗?
C++不会执行隐式强制转换void*,您必须将其显式化
data = static_cast<char*>(mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0));
Run Code Online (Sandbox Code Playgroud)