Ir para o conteúdo
Gonçalo Ferreira

Conversão

Mensagens Recomendadas

Gonçalo Ferreira    0
Gonçalo Ferreira

Olá a todos, é a primeira vez que uso este forum, que desde já me parece bastante útil e que vou passar a consultar regularmente.

Falando agora da minha duvida,

Eu usava o visual studio 6 c++, agora com as novas versoes da microsoft visual studio c++ 2008, ao fazer um novo projecto, ia fazer uma função que gera-se numeros aleatorios, e vejo que ele não me deixa fazer como sempre fiz :

        long semente;

time(&semente);

srand(semente);

mas ele implica e dá-me o seguinte erro : ( cannot convert parameter 1 from 'long *' to 'time_t *' )

Alguém me pode ajudar, obrigado !

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mrentes    0
mrentes

A função time (http://www.cplusplus.com/reference/clibrary/ctime/time.html) recebe como parâmetro um apontador para o tipo de dados time_t e estás a passar-lhe um apontador para long. Experimenta fazer um cast

time ( (time_t *) &semente);

se bem que prefiro que passes o tipo de apontador correcto na função time. Experimenta e diz se funciona!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gonçalo Ferreira    0
Gonçalo Ferreira

Pronto já exprimentei, sim claro que fica mais correcto ao enviar um argumento do tipo que a função time esta a espera, mas funciona de ambas as maneias, brigado pela ajuda, mas ja agora não me consegues explicar o porque de a vesão mais antiga não imbirrar e a mais recente imbirrar...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mrentes    0
mrentes

Não faço ideia. Não programo nesse editor nem estou a par das diferenças entre os compiladores usados em versões diferentes do Visual Studio. Tenta ver na documentação online da M$ provavelmente tem lá alguma coisa sobre isso. :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

No Visual Studio 6, time_t era um tipo com 32 bits. No Visual Studio 2008, é (por omissão) um tipo com 64 bits.

Se definires a macro _USE_32BIT_TIME_T já não terás esse erro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade