[elektro] C -- illegal pointer hiba
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Wed Sep 25 18:24:04 CEST 2013
Hali!
Látni kellene, hogy mi az SPI1_Write függvény deklarációja (vagy lehet,
hogy makró, akkor azt). Gyanús nekem, hogy az SPI1_Write az nem pointert,
hanem char-t vár, és akkor az SPI1_Write(*s) lenne a jó megoldás. De ezt
nem tudom, mert nem ismerem ezt a környezetet.
A const char *s ugye azt jelenti, hogy s egy char-ra mutató pointer, ahol a
pointernek bármilyen értéket adhatsz, de maga a pointer const adatra mutat,
tehát a pointeren keresztül nem változtathatod meg a mutatott adatot. Azaz
pl. a *s = 8 nem legális, de az s++ igen.
A char * const s viszont azt jelenti, hogy a pointer értéke konstans, tehát
az általa mutatott adatot megváltozhat, de maga a pointer értéke nem. Tehát
s++ nem ér, *s++ vagy *s=a+3 viszont igen.
Ha egy függvény nem const-ot vár a pointer által mutatodd adatra, akkor
cons-ot adni neki rossz, mert elvileg szabadna neki változtatnia. tehát az
hiba. Szóval meg kellene nézni, hogy mit vár. Mondjuk, hogy az strlen miért
hibázik, azt nem értem. Ott is ez a hiba?
Szabolcs
2013. szeptember 25. 17:50 elight at gmail.hu írta, <elight at gmail.hu>:
> Sziasztok..
>
> Ezt miért dobhatja ki a mikroC fordító?
>
> void Funct_SendSTR( const char *s )
> {
> do
> {
> SPI1_Write( s ) ; // ezen soron "illegal pointer conversion"
> } while ( *s++ != 1 );
>
> }
>
>
> meg azt is kidobja pl hogy
>
> if( strlen( s ) == x )
> {
>
> }
>
> más C nyelvben ez menni szokott?
> vagy nagyon benézek valami?
>
> a 'const' mindenképpen szükséges.
> hogyan írnátok helyesen?
>
>
> Az is kérdésem hogy
>
> ( char * s ) és ( char *s )
>
> az ugyanaz, sajnos ezek a pointeres témák
> általában összegabajodnak bennem.
>
>
>
> Üdv István
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list