[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