[elektro] C struktura kérdés
hg12345
hg12345 at freemail.hu
Fri Apr 16 18:15:19 CEST 2010
Üdv
Sajnos nem nyert, mert ha Ti elgondolásotok szerint definiálom, akkor a
ITEMu_t-ban nevet kell adnom ennek a struct-nak és pont ezt nem szeretném.
Szia!
Oké, ha jó értem, akkor tagITEMu struct utolsó uninjában lévő struct-ot
szeretnéd használni a tagITEMstatus structban. Erre is áll amit Arnold
mondott, tehát hogy a két struct előtt van egy typedef struct és ezt
használod mindkettőben.
Üdv,
Lajos
2010/4/16 hg12345 <hg12345 at freemail.hu>
> Ám legyen :-)
> Szerintem ebből se értetek többet.
>
> Azért használok typedef-t mert így egyszerűbb később a kezelése.
>
> A második typedef-be szeretném a "Legacy" structuráját átmenteni.
> A jelenlegi kis különséget még tudom oldani, nem ez a problémám :-)
> --------------------------------------------------------------------
> typedef struct tagITEMu{
> struct{
> iStr_t iString:12;
> //String Index
> unsigned No:4;
> //kisegitő sorszám
> };
>
> union{
> struct{
> unsigned Default:12;
> //default érték
> unsigned Ch:4;
> //csatorna sorszám
> };
> struct{
> unsigned ItemDelta:12;
> //a menü blokk mérete....... (igy nagyobb területet
> tudok definiálni)
> };
> };
>
> union{
> unsigned int Tag3rd;
> //ezt nem használom sehol csak az érték
> adásnál....
> MIndex_t ItemStart;
> //következő ITEM kezdö címe... (nincs
> meghatározva a kezdő hely!!!!)
> unsigned int *pRam;
> //Ram ban tárol érték, elvileg ezt is tudom
> korlátozni erre a tartományra....
> struct {
> unsigned SelIndex:1;
> //kulső vagy helyettesítő index
> eE2index_t E2Index:15;
> //külső memória cim
> };
> unsigned short Address;
> //Második memória szó
> };
>
> union{
> unsigned short Legacy;
> //hozzáféréssel kapcsolatos adatok
> void (*pF)(struct tagITEMu *p);
> //függvény pointer ezért a legalsó bitje mindig nulla!, a pointer a
> változtatások miatt szükséges
> struct{
> FunctConst_t SelFunct:1;
> //0: a tárol érték egy függvény címet takar.... 1:
> konstans megadás
> unsigned :2;
> //!!! Free szabadon felhasználható
> EditType_t EditType:5;
> //állítási tipus
> DecPoint_t DecPoint:4;
> //decimál point
> Access_t
> Access:4; //hozzáférési jog
> };
> };
> } ITEMu_t;
>
>
> typedef struct tagITEMstatus{
> unsigned
> Live:1; //0: ez a csatorna nem
> létezik, 1 a csatorna létezik....
> unsigned :2;
> //!!! Free szabadon felhasználható
> EditType_t EditType:5;
> //állítási tipus
> DecPoint_t DecPoint:4;
> //decimál point
> Access_t
> Access:4; //hozzáférési jog
> }ITEMstatus_t;
>
>
> --------------------------------------------------------------------
>
>
>
>
>
>
>
> Szia!
>
> Ezt nem értem (az elsőt sem). Meg tudnád magyarázni egy bővebb példával?
> Annyira leegyszerűsítetted, hogy nem érthető :o
>
> Üdv,
> Lajos
>
> 2010/4/16 hg12345 <hg12345 at freemail.hu>
>
> > Ettől féltem :-(
> >
> > Mint említettem ez csak egy kiragadott példa.
> > Az eredeti helyzetben egy ROM-ban összetett konstans leírását tartalmazza
> a
> > strutc. Majd ez a struct igen sok helyen szerepel további struct
> belsejében.
> > Mire leírom a teljes kifejtést, nem férek el monitoron, pedig nem kicsi,
> és
> > értelmetlen lenne külön kifejteni a bitselect, mikor az többivel együtt
> > értelmes.
> >
> > Ez a kis darab máshol és más környezetben szerepel, de a végén találkozik
> > az eredeti struct-val
> >
> > Én nem akartam nevet adni a változó résznek, csak a struct-nak, hogy
> később
> > hivatkozni tudjak erre a struct meghatározásra. Minden meghatározást
> > szeretek egyszer definiálni, és a fordító bábáskodására bízom magamat és
> > programomat.
> >
> > pontosan nem ertelek, de:
> >
> > typedef struct{
> > unsigned b1:1;
> > unsigned b2:1;
> > };
> >
> > }AAA_T;
> >
> > typedef union {
> > long V1;
> > AAA_T tagAAA;
> > } TEST_t;
> >
> >
> > miert nem jo?
> >
> > A.
> > On 2010. 04. 16. 15:32, hg12345 wrote:
> > > Hi!
> > >
> > > Hogyan lehet egy unnamed struct struktura nevet adni?
> > >
> > > typedef union {
> > > long V1;
> > > struct tagAAA{
> > > unsigned b1:1;
> > > unsigned b2:1;
> > > };
> > > } TEST_t;
> > >
> > >
> > > typedef struct tagAAA AAA_t;
> > >
> > > és későbbiekben ezt a typedef-et szeretném használni. A belső
> > strukturának nem szeretnék nevet adni (unnamed).
> > >
> > > A fordító említi, hogy a tagAAA nem definiáltam ami jogos is.
> > > Ezért később nem is tud rá hivatkozni.
> > >
> > > Ha felcserélem a TYPEDEF meghatározásokat vagy csak struct névvel
> > definiálom ekkor nem tudok unnamed struct létrehozni, mert változó névre
> > szükség van!
> > >
> > > #define esetén, meg nem válik azonos típusúvá a két struktura, ezért
> > castolás nélkül nem tőtlhetők egymásba.
> > >
> > > A fenti példa csak egy egyszerűsítés de a lényeg jól látszik belőle.
> > >
> > > Van erre megoldás?
> > >
> > > -----------------------------------------
> > > elektro[-flame|-etc]
> > >
> >
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
> -----------------------------------------
> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list