Re: doplnění prvků do struktury
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Květen 8 09:09:59 CEST 2024
size je tam podle me pro kontrolu, ze je struktura spravneho typu a
navic si pak muze funkce rozlisit, jakeho konkretniho typu, pokud je vic
variant. Pokud potrebuje jen tu zakladni, tak ta je k dispozici vzdy,
pokud chce pristupovat na nejake rozsireni, mela by si aspon
zkontrolovat velikost, jestli nesaha mimo.
A soucasti struktury mohou byt dalsi struktury, uniony, pole... To
prekladac pochopi spravne a proste to tam vlozi. Pokud je vlozena
struktura nepojmenovana, pristupuje se k prvkum jako by to struktura
nebyla, predpokladam.
takze kdyz napisu:
union {
struct {
int a;
int b;
};
char c[256];
} u;
tak muzu psat u.x[0] = 1; u.a = 123; ...
samozrejme musi byt ruzne identifikatory, typicky je to zajisteno
nejakym prefixem.
Dne 08.05.2024 v 7:58 Martin Záruba napsal(a):
>
> Nějak mám dlouhé vedení....
>
> K čemu je size_t size; v strukturách?
>
> Jak se při použití x_ext v posledním zápisu struktury dostanu na prvek
> a? Není mi jasné, co kompilátor vytvořil z poslední definice x_ext,
> protože neřve. Ale x přece není popis struktury, ale proměnná typu struct
>
>
> Martin Záruba
> Dne 7.5.2024 v 23:27 Miroslav Šinko napsal(a):
>> Inspirujte sa napr. vo WinAPI. Nejdem nic kopirovat, napisem pointu:
>>
>> struct{
>> size_t size;
>> int a;
>> int b;
>> }x;
>>
>> Potom si niekto moze spravit:
>> struct{
>> size_t size;
>> int a;
>> int b;
>> int c;
>> int d;
>> }x_ext;
>>
>> Aby nebolo treba copy/paste, tak takto:
>> struct{
>> struct x;
>> int c;
>> int d;
>> }x_ext;
>>
>> Kazdy je povinny pri naplnani struktury vyplnit
>> size=sizeof(<moja_struktura>) a pri pouziti si skontrolovat size, ci
>> mozem pristupovat na premenne svojej struktury.
>>
>> miro
>>
>>
>> On 7.5.2024 18:02, Martin Záruba wrote:
>>> Mám soubor, třeba muj.h ve kterém je deklarovaná struktura x, třeba
>>>
>>> struct{
>>> inta;
>>> int b;
>>> }x;
>>>
>>> Soubor je pomocí include vložen do hlavního programu. A já bych
>>> potřeboval, aby uživatel, který použije #include muj.h mohl do té
>>> struktury vložit další prvky, takže struktura by se o tyto prvky
>>> (které v ní nejsou definované) rozšířila. Vymyslel jsem toto:
>>>
>>> structstru {
>>> inta;
>>> int b;
>>> #ifdefuser
>>> user
>>> #endif
>>> };
>>>
>>> A v uživatelském programu použít
>>>
>>> #defineuser\
>>> intc; \
>>> intd;
>>>
>>> Asi to vypadá jako divný požadavek, ale mě jde o to, aby struktura x
>>> byl jeden prvek, který obsahuje jak mé, tak uživatelem vytvořené členy.
>>>
>>> Je na tom něco v nepořádku nebo to lze udělat líp?
>>>
>>>
>>> --
>>>
>>> Martin Záruba
>>>
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240508/2d360188/attachment.htm>
Další informace o konferenci Hw-list