[elektro] C struktura kérdés
Fuzesi Arnold
arnold.fuzesi.lista at gmail.com
Fri Apr 16 17:54:33 CEST 2010
Assszem ertem.
Szoval az a gondod h nem atlathato ha kulon typedef-eled a legacy-t es
beszurogatod ide-oda.
Azt szeretned h benne typedef-eld a masodik strukturaba ott lasd is, aztan
mashol csak a tipusra hivatkozz?
Ha nem ez a gond akkor nemertem :)
Arnold
On 2010. 04. 16. 17:41, hg12345 wrote:
> Á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]
>
More information about the Elektro
mailing list