/
Forside
/
Teknologi
/
Udvikling
/
C/C++
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
C/C++
#
Navn
Point
1
BertelBra..
2425
2
pmbruun
695
3
Master_of..
501
4
jdjespers..
500
5
kyllekylle
500
6
Bech_bb
500
7
scootergr..
300
8
gibson
300
9
molokyle
287
10
strarup
270
Program fejl!
Fra :
Morten
Dato :
02-12-01 15:21
Hej, jeg har et lille problem med et program som jeg har skrevet af
fra en bog. Jeg bruger MS Visual C++ 6.0.
Her er programmet uden kommentarer:
#include<stdio.h>
#include<stdlib.h>
char count, *ptr, *p;
main()
{
ptr = malloc(35 * sizeof(char));
if(ptr == NULL)
{
puts("Memory allocation error.");
exit(1);
}
p = ptr;
for(count = 65; count < 91; count++)
*p++ = count;
*p = '\0';
puts(ptr);
return 0;
}
Når jeg prøver at compile dette får jeg følgende error:
D:\...\Malloc\Malloc.cpp(7) : error C2440: '=' : cannot convert from
'void *' to 'char *'
Kan nogen hjælpe mig?
Hilsen Morten
Anders Borum (
02-12-2001
)
Kommentar
Fra :
Anders Borum
Dato :
02-12-01 16:32
"Morten" <mozart@mobilixnet.dk> skrev i en meddelelse
[klip]
> char count, *ptr, *p;
>
> main()
> {
> ptr = malloc(35 * sizeof(char));
Hej Morten.
ptr har typen char* mens malloc returnerer void*. Derfor skal pointeren
typecastes. I standard-C vil en void-pointer normalt blive implicit
konverteret til en anden slags pointer og omvendt. Så det ser ud som om du
oversætter programmet med en C++-oversætter. Dette er egentlig ikke så
underligt da kildekoden ligger i filen Malloc.cpp. Omdøb evt. filen til
Malloc.c
Du kan under alle omstændigheder foretage denne typecasting eksplicit ved at
skrive:
ptr = (char*)malloc(35 * sizeof(char));
I C++ har man dog en lidt lækrere måde at allokere hukommelse på, så man
undgår eksplicit typecasting.
ptr = new char[35];
[klip]
> Når jeg prøver at compile dette får jeg følgende error:
> D:\...\Malloc\Malloc.cpp(7) : error C2440: '=' : cannot convert from
> 'void *' to 'char *'
[klip]
Mogens Hansen (
02-12-2001
)
Kommentar
Fra :
Mogens Hansen
Dato :
02-12-01 18:19
"Morten" <mozart@mobilixnet.dk> wrote in message
>
> Når jeg prøver at compile dette får jeg følgende error:
> D:\...\Malloc\Malloc.cpp(7) : error C2440: '=' : cannot convert from
> 'void *' to 'char *'
> Kan nogen hjælpe mig?
Du har skrevet hvad der stort set ligner et lovligt C program men ikke et
lovligt C++ program.
Linien
main()
bør ændres til
int main(void)
Du skal derfor sikre dig at du oversætter det som et C program.
Sørg f.eks. for at source-filen gemmes med extension .c.
Alternativt kan du lave det om til et C++ program ved at ændre
ptr = malloc(35 * sizeof(char));
til
ptr = static_cast<char*>(malloc(35 * sizeof(char)));
Venlig hilsen
Mogens Hansen
Søg
Alle emner
Teknologi
Udvikling
C/C++
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408925
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.