Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
C. Smith Forumaš(ica)


Pridružen/a: 15. 06. 2006. (21:29:33) Postovi: (5)16
Spol: 
|
|
[Vrh] |
|
goranm Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12) Postovi: (906)16
Spol: 
|
|
[Vrh] |
|
C. Smith Forumaš(ica)


Pridružen/a: 15. 06. 2006. (21:29:33) Postovi: (5)16
Spol: 
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 15:07 pet, 16. 6. 2006 Naslov: |
|
|
[quote="goranm"]Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.[/quote]
Konverzija iz [tt]void[/tt] pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.
Dobro je pisati eksplicitnu konverziju kod poziva funkcije [tt]malloc[/tt], jer se na taj nacin postize veca citljivost koda.
goranm (napisa): | Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto. |
Konverzija iz void pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.
Dobro je pisati eksplicitnu konverziju kod poziva funkcije malloc, jer se na taj nacin postize veca citljivost koda.
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
HijenA Forumaš(ica)

Pridružen/a: 23. 01. 2004. (16:46:04) Postovi: (3D2)16
Spol: 
Lokacija: Prazan skup ;-)
|
Postano: 12:38 sub, 17. 6. 2006 Naslov: |
|
|
[quote="mdoko"][quote="goranm"]Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.[/quote]
Konverzija iz [tt]void[/tt] pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.[/quote]
Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.
mdoko (napisa): | goranm (napisa): | Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto. |
Konverzija iz void pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba. |
Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 12:44 sub, 17. 6. 2006 Naslov: |
|
|
[quote="HijenA"]
Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.[/quote]
Nece javiti gresku ako kompajliras file s ekstenzijom [tt].c[/tt], jer se onda poziva C kompajler tj. [tt]gcc[/tt], ali ukoliko se kompajlira file s ekstenzijom [tt].cpp[/tt], onda se poziva C++ kompajler tj. [tt]g++[/tt] koji ce javiti gresku jer, za razliku od C standarda, C++ standard ne dozvoljava implicitnu konverziju iz [tt]void*[/tt] u neki drugi pointerski tip.
Primjer: imamo dva filea [tt]proba.c[/tt] i [tt]proba.cpp[/tt], koji oba izgledaju ovako:
[code:1]
int main(){
void* p1;
int* p2;
p2=p1;
return 0;
}
[/code:1]
Poziv C kompajlera:
[code:1]
> gcc proba.c
[/code:1]
uredno prolazi, a u slucaju poziva C++ kompajlera dobivamo:
[code:1]
> g++ proba.cpp
proba.cpp: In function `int main()':
proba.cpp:4: error: invalid conversion from `void*' to `int*'
[/code:1]
Da ne bi ispalo da se radi o crnoj magiji, evo i verzije kompajlera:
[code:1]
> gcc --version
gcc (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> g++ --version
g++ (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[/code:1]
[size=5]Edit: dodan primjer[/size]
HijenA (napisa): |
Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera. |
Nece javiti gresku ako kompajliras file s ekstenzijom .c, jer se onda poziva C kompajler tj. gcc, ali ukoliko se kompajlira file s ekstenzijom .cpp, onda se poziva C++ kompajler tj. g++ koji ce javiti gresku jer, za razliku od C standarda, C++ standard ne dozvoljava implicitnu konverziju iz void* u neki drugi pointerski tip.
Primjer: imamo dva filea proba.c i proba.cpp, koji oba izgledaju ovako:
Kod: |
int main(){
void* p1;
int* p2;
p2=p1;
return 0;
}
|
Poziv C kompajlera:
uredno prolazi, a u slucaju poziva C++ kompajlera dobivamo:
Kod: |
> g++ proba.cpp
proba.cpp: In function `int main()':
proba.cpp:4: error: invalid conversion from `void*' to `int*'
|
Da ne bi ispalo da se radi o crnoj magiji, evo i verzije kompajlera:
Kod: |
> gcc --version
gcc (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> g++ --version
g++ (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
Edit: dodan primjer
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
HijenA Forumaš(ica)

Pridružen/a: 23. 01. 2004. (16:46:04) Postovi: (3D2)16
Spol: 
Lokacija: Prazan skup ;-)
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
|