我不明白为什么会触发这个警告!
test.c:920:56:警告:从不同大小的整数转换为指针[-Wint-to-pointer-cast]
if((memcpy((void *)(buffer_post_offset + position),(void *)data_block_n,bytes_to_write))== NULL){
这是一段代码......
char *buffer_post_offset = NULL;
// ....
// Gets the data between offset and size
for(i = 0, data_block_n = start_at, position = 0, bytes_to_write = 0; data_block_n <= finish_at; ++data_block_n, ++i, position += bytes_to_write){
// Gets from disk the sector/block of data
if(Disk_Read(data_block_n, sector_str_data) == FAIL){
osErrno = E_GENERAL;
return FAIL;
}
// Calculates how many bytes are to be written
bytes_to_write = SECTOR_SIZE;
if(data_block_n == finish_at)
bytes_to_write -= inode.size - open_files_table.table[fd]->offset % SECTOR_SIZE;
// Gets more memory for the buffer
if((buffer_post_offset = (void *) realloc((void *) buffer_post_offset, (i + 1) * bytes_to_write * sizeof(char))) == NULL){
osErrno = E_GENERAL;
return FAIL;
}
// Writes into the buffer that store the data between offset and size
// GETTING THE WARNING ON THE NEXT LINE !!!!!!
if((memcpy((void *) buffer_post_offset + position, (void *) data_block_n, bytes_to_write)) == NULL){
osErrno = E_GENERAL;
return FAIL;
}
}
答案 0 :(得分:2)
sizeof (int)
可能与sizeof(void*)
不同,请使用std::uintptr_t
将指针保存在整数中。
答案 1 :(得分:0)
在memcpy中,是sector_str_data而不是data_block_n。
sector_str_data是char *,所以根本没有警告!
data_block_n是一个整数。
真的很抱歉!