kerdesek
Valenta Ferenc
ferenc.valenta at vhl.hu
Wed Aug 31 20:12:12 CEST 2005
theblond wrote:
> VF> Azt nem ertem, hogy az uint8_t info[0] helyett miert nem
> VF> uint8_t *info-t irtak? Ha jol sejtem, ugyanaz, de ez utobbi mukodik is.
> VF> Persze warning hegyek vannak, mert siman atadjak castolas nelkul
> VF> olyan fuggvenynek, ami char *-ot var... Szar az egesz.
> VF> Kivancsi vagyok, legalabb mukodik-e.
> Nem fog mûködni.
>
> A két típus között alapvetõen nagy különbség van.
> char * akarmi; // azt jelenti egy char tipusu valtozora mutato mutato.
> char akarmi[2]; // egy olyan tomb aminek az elemei char tipusuak és egymás után
> 2 darab ilyen elem van.
Ez korrekt. Viszont, ugy tunik:
char akarmi[0]; // ez a fentiekkel ellentetben char * tipusu, ugyanis
ilyen parametert varo fuggveny kapja meg parameterkent ebben a progiban.
Ezert fordult le a progi, ha atirtam uint8_t *info-ra. Kulonben le sem
fordult volna...
Az eredeti celfordito a GCC. Ezuton is csokoltatom a GCC fejleszto
csapatot!
Az IAR csak butan nez, mert a 0 hosszu tomb hulyeseg, ha valtozhatna a
hossz, akkor type mismatch (mert a char akarmi[2] nem ugyanolyan tipusu
mint a char akarmi[3]), raadasul a progiban egy harmadik tipust varnak
el a fuggvenyek, ahol parameterkent szerepel :)
> elvileg "char akarmi[];" -nak kéne mûködnie, de nemhiszen hogy be fog jonni,
Ami ugyanaz mint a char *akarmi.
Tehat ez mukodik:
char akarmi[] = "Jozsi hozd vissza a fogam, mert pofanvaglak!";
printf(akarmi);
> Most nem ugrik be a feloldasara semmilyen trukk, de arra határozottan emléxem,
> hogy van ra "workaround".
En tovabbra is arra tippelek, hogy uint8_t *info jo lesz, de majd
kiprobalom. Szerintem ez csak egy szokasos GCC szivatas, semilyen
mas fordito sem tamogatja. Ezert nem ertettem en sem :)
--
Valenta Ferenc <ferenc.valenta at vhl.hu> Volcano/Mentor Graphics
"My love is REAL, unless declared INTEGER"
More information about the Elektro
mailing list