DicasBCB
Bem-vindo: Seg Set 06, 2010 2:06 pm

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 3 mensagens ] 
Autor Mensagem
 Título: cast em memcpy
MensagemEnviado: Qui Jan 14, 2010 9:47 am 
Offline

Registrado em: Dom Dez 02, 2007 7:31 pm
Mensagens: 18
Localização: Porto Alegre
Bom dia a todos,

Estou com um problema num cast em memcpy que não estou conseguindo resolver:

Código:
memcpy(s->d[j], ((Byte*)(void*)bdata)+64+(8*j), 8);


onde s é uma estrutura e o membro d é um vetor de double e bdata é um void* recebido pela função.

Como está sendo feito um deslocamento em bdata, preciso converter para Byte para poder deslocar. Mas o erro "Incompatible type conversion" persiste.
Alguém tem alguma idéia?

Muito obrigada.


Voltar ao topo
 Perfil  
 
 Título: Re: cast em memcpy
MensagemEnviado: Qui Jan 14, 2010 6:38 pm 
Offline
Hitokiri Battousai
Avatar do usuário

Registrado em: Ter Ago 30, 2005 10:05 am
Mensagens: 1070
Literalmente o erro se refere ao primeiro argumento, que deve ser um ponteiro, seria resolvido antecedendo a variável por &, dessa forma:
Código:
memcpy(&s->d[j],...

Porém provavelmente irá gerar um erro de memória por apontar para um endereço inválido, devido cálculo matemático feito no segundo argumento, que também deveria ser um ponteiro para double, portanto o calculo que efetuou não vai alterar o dado e sim o ponteiro (a não ser que este seja sua intenção)!
Talvez o que você esteja procurando fazer seja resolvido com uma simples atribuição:
Código:
s->d[j] = *((double*)bdata + 64 + (8 * j));


At.te,

_________________
B) Pod Crê 8)
Imagem


Voltar ao topo
 Perfil  
 
 Título: Re: cast em memcpy
MensagemEnviado: Qui Jan 14, 2010 8:55 pm 
Offline

Registrado em: Dom Dez 02, 2007 7:31 pm
Mensagens: 18
Localização: Porto Alegre
Valeu pela resposta! Compilei aqui e funcionou...
É o ponteiro que quero alterar, sim, pois bdata é um vetor de double (a partir dos primeiros 64 bytes), e vou ir pegando um por um...
Obrigada!


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 3 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Yahoo [Bot] e 3 visitantes


Enviar Mensagens: Proibido
Responder Mensagens: Proibido
Editar Mensagens: Proibido
Excluir Mensagens: Proibido
Enviar Anexos: Proibido

Procurar por:
Ir para:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB