[elektro] C struktura kérdés
hg12345
hg12345 at freemail.hu
Fri Apr 16 17:41:24 CEST 2010
Á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]
More information about the Elektro
mailing list