Re: doplnění prvků do struktury
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Středa Květen 8 09:34:02 CEST 2024
x ale neni promenna ale jmeno struktury. To je to same, jako byste ji
tam rozepsal treba jako mam v prikladu.
promenna treba y by se definovala
struct x y;
Dne 08.05.2024 v 9:30 Martin Záruba napsal(a):
>
> Tomu rozumím, ale nějak mi nedochází, co vznikne z. Do struktury
> pochopitelně mohu vložit další strukturu, ale co se stane, když vložím
> PROMĚNNOU typu struct, což je v té druhé definici.
>
> struct{
> size_t size;
> int a;
> int b;
> }x;
>
> struct{
> struct x;
> int c;
> int d;
> }x_ext;
>
> Tedy co vlastně obsahuje x_ext
>
> Martin Záruba
> Dne 8.5.2024 v 9:09 Jaroslav Buchta napsal(a):
>> 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
>>
>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored bywww.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/33612675/attachment-0001.htm>
Další informace o konferenci Hw-list