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