[elektro] C -- illegal pointer hiba
elight at gmail.hu
elight at gmail.hu
Wed Sep 25 18:58:05 CEST 2013
Nagyon köszi..
a kis fejtágítást.
Igy már sokkal világosabb..
És bevallom már értem,
amit ösztönösen elkövettem,
hogy (*s ) et írok be az SPI-nek..
Ugy ment , de a kérdés mégis megmaradt bennem.
Azért is hoztam szóba.
Már éppen azon morfondíroztam,
hogy felfújom a pofám és írok
egy karakter számoló ciklust helyette..
De akkor esetleg a típus kényszerítéssel is próbálkozgatok..
Ebből annyi már bejött, hogy az "strlen" -emnek valamiért
nem engedi a "const" típusmódosítást..
Lehet itt lenne a bibi . ? .
Üdv István
2013-09-25 18:47 keltezéssel, SZIGETI Szabolcs írta:
> Hali!
>
> Olvasd el, amit előbb írtam. Ha a te strlen-ed valóban char *-ot vár, akkor
> annak nem adhatsz át const char*-ot. Elvileg a fordító nem fogja engedni,
> hogy nem const pointernek átadjál const-ot, hiszen a const célja pont az,
> hogy jelezze, nem változtathatod meg.
> De az érdekes, hogy az strlen nem const*, mivel azokat a függvényeket, amik
> nem hatnak vissza a pointeren keresztül mindig cons*-nak szokták
> deklarálni. Hiszen annak sima és const pointert is adhatsz, ráadásul plusz
> biztonságot jelent, a függvény fejlesztése során, mert véletlenül sem fogsz
> visszafelé változtatni a paramétereken keresztül.
>
> Ha az SPI1_Write unsigned short -ot vár, akkor nem kell segédváltozó, simán
> a *s-et át kell tudnod adni, a fordító megoldja magától, hogy short-ot
> csináljon a char-ból. Ahol egyértelmű az automatikus konverzió, ott a
> fordító megcsinálja. Ahol nem, de értelmes, ott pedig castokkal magad
> kényszerítheted.
>
> Szabolcs
>
>
>
> 2013. szeptember 25. 18:37 elight at gmail.hu írta, <elight at gmail.hu>:
>
>> Köszi, megnéztem ..
>>
>> és nem , hanem
>>
>> unsigned short data
>>
>> ezek szerint egy változóba át is kellene szedegetnem
>> kilökés előtt..
>>
>> A példa program meg valószínűen pointeres
>> SPI átadást használhatott. Majd kiguberálom
>> belőle , hogy beigazolódjon.
>>
>> Történt , hogy egy nagy terjedelmű c++ -os
>> programból operálok át részeket PIC ben...
>> és már csak a stringes pointer aritmetika az
>> amin kerengek mint a gólya...
>>
>> Akkor legalább ez már megvan.
>>
>> De az
>>
>> int strlen( char * )
>>
>> definiciójú függvényt is
>> kidobja illegál-ra
>>
>> A tényleges sor ami galibát okoz ilyesmi..
>>
>> CMD_Text( unsigned int x; unsigned int y ; unsigned int chartype ;
>> const char *s )
>> {
>> CMD_Start_WR( SMD_SIZE*3 + strlen( s ) + 1 ); // itt fut az
>> "illegal pointer conversion" hibára ,
>> // a többi sor ha kihagyom ténylegesen jól lefut,
>> // csak éppen a parancs megnyitás kimarad.
>> CMD_Funct_Send32( SMD_TEXT ) ;
>> ...
>> }
>>
>>
>> 2013-09-25 18:21 keltezéssel, Bali Zoltan írta:
>>> Hali!
>>>
>>> Az "SPI1_Write( s )" is pointert vár?
>>>
>>>
>>> Üdv. Zoli
>>>
>>> 2013. 09. 25. 17:50 keltezéssel, elight at gmail.hu írta:
>>>> 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]
>>>>
>>>>
>>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list