[elektro] C kérdés CORTEX M0 és M0+ KEIL fordítóra

hg12345 hg12345 at freemail.hu
Fri Aug 12 18:38:56 CEST 2016


Pont úgy épül fel a fordítás, hogy először egy enum sorozat lesz rendelve a stringekhez, majd a stringek tárolódnak, és ez után hozza létre a pointer tömbböt.


SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta:
>Hali!
>
>Az OK, csak szerintem fordítva van az inicializálásod. Rosszul lesz így
>feltöltve a tömb, már amennyiben az esrt meg az nstr az összetartozó
>kettes. Ez persze nem befolyásolja, hogy miért nem tudod flashbe tenni, de
>ahhoz nem tudok hozzászólni, mert ezt a platformot nem ismerem.
>
>Egyébként van egy olyan gyanúm, hogy azért nem hajlandó const-nak, mert az
>inicializálással és a dimenzió megadással túlhatároztad neki a feladatot.
>Ha kétimenzióst inicializálsz, akkor elég a második méretet megadni
>(kötelező is). A többit kitalálja magától. De ez csak egy tipp.
>
>Szabolcs
>
>
>
>2016. augusztus 12. 11:21 hg12345 írta, <hg12345 at freemail.hu>:
>
>> Hi,
>>
>> const uint8_t
>> tudom, hogyan tárolja, de a stringek amiket tárolnék változó hosszúságúak,
>> azért erőltetem ezt a megoldást.
>> A tömböt is nem közvetlenül akarom felépíteni fordítási időben, hanem egy
>> magát hívó include file generálja.
>>
>> Üdv.
>>
>>
>>
>> SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta:
>> >Hali!
>> >
>> >Nem tudom, hogy estr1, nstr1 stb-nek mi a típusa.
>> >Viszont a C  többdimenziós tömböket egydimenziós sorfolytonos módon
>> >tárolja, tehát az inicializálóban a belső zárójelek között 6 elemnek
>> >kellene lennie, bár ez egy csomó implementációt nem zavar, ha az elemszám
>> >összesen ugyanaz és mindkét dimenzió értéke meg van adva.
>> >
>> >Szabolcs
>> >
>> >
>> >2016. augusztus 11. 20:31 hg12345 írta, <hg12345 at freemail.hu>:
>> >
>> >> Hi,
>> >>
>> >> hogyan lehet a fordítót rászedni, hogy egy pointer tömb csak a FLASH-ben
>> >> legyen tárolva.
>> >> pl.: több nyelvű string készlet normál esetben így kéne írni
>> >>
>> >> const uint8_t conts* StrArray[2][6] = {{ estr1,nstr1 }; {estr2,nstr2};
>> >> ..... };
>> >>
>> >> vagyis constans pointer tömb constans értékekre mutatva,
>> >> de a fordító csak egy "const" fogad be.
>> >>
>> >> próbálkoztam const* helyet  * is, elvileg ez is jó lenne, hiszen a
>> >> sztringek amúgy is FLASH területen vannak, de de az eredmény ugyanaz,
>> >> inicializált ram területen készíti el pointer tömböt..
>> >>
>> >> const uint8_t * StrArray
>> >> uint8_t const * StrArray
>> >> ugyan azt az eredményt adja.....
>> >>
>> >> __attribute__ se hozott jó eredményt
>> >>
>> >> Mi a helyes megoldás?
>> >>
>> >> Üdv
>> >>
>> >>
>> >> -----------------------------------------
>> >>           elektro[-flame|-etc]
>> >-----------------------------------------
>> >          elektro[-flame|-etc]
>>
>> -----------------------------------------
>>           elektro[-flame|-etc]
>-----------------------------------------
>          elektro[-flame|-etc]



More information about the Elektro mailing list