Domanda

I have the following snippet:

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;

But when I compile, I receive:

error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive] data = mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0);

Could someone give me a hint at what's wrong?

È stato utile?

Soluzione

C++ does not perform implicit casts from void*, you must make this explicit

data = static_cast<char*>(mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0));

Altri suggerimenti

mmap returns a void*. data is a char*. You'll need to cast it:

data = static_cast<char*>( mmap((caddr_t)0, bytesToTransfer, PROT_READ, MAP_SHARED, fd, 0) );

This will try to resolve the type issue at compile time.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top