Re: macro for fir list?

Liste des GroupesRevenir à cl c  
Sujet : Re: macro for fir list?
De : ifonly (at) *nospam* youknew.org (Opus)
Groupes : comp.lang.c
Date : 30. Mar 2024, 07:46:00
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <uu88uo$qv85$3@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
On 28/03/2024 14:40, fir wrote:
 you know famous fir list
 fir list its a list container i somewhat "invented",
i write "invented" as its reasonably simple thing but i never heard
anyone uses it so as for me i invented it for personal use and use it
It's a pretty common thing though. It's just that it's not standard, so everyone does it pretty much in their own way.
In my way, I avoid to realloc the 'dynamic array' everytime a new item is appended, as it can be a costly operation. I pre-allocate for a certain number of items, and keep track of the current number of items and the current size of the 'dynamic array'. If there is enough room left, I just add the item, no realloc needed. If there isn't, then I realloc, with not just room for 1 item, but a whole new block, for the same reason. You get the idea.
This is a common way of dealing with such dynamic containers. (See: bump allocators, and all that...)

some could usually wrote a more convenient Add "method" not to pass structures but just arguments and struct assigment do inside
 From what I get - it's not fully clear - you'd like to directly pass a structure 'literal' to your function, rather than having to go via an intermediate local variable.
This is exactly what C99 has brought, among other things, for over 20 years. Do not hesitate to use it: compound literals.
For instance with your code, you can do this instead:
Fir_List_AddOne(&(struct Fir_List_Entry){ 11, 22 });
Yes, the 'cast' in front of the braces is mandatory for compound literals.
Note that your posted code is incorrect, you need to either refer to 'Fir_List_Entry' with 'struct Fir_List_Entry', or typedef it prior.
I think omitting the 'struct' is allowed in C++, not so in C.
Conversely, I'm not sure compound literals (which I find very handy) are available in C++. But if you were using C++, you wouldn't need to do the above anyway, so. Just mentioning it.

Date Sujet#  Auteur
28 Mar 24 * macro for fir list?20fir
28 Mar 24 +* Re: macro for fir list?4fir
28 Mar 24 i`* Re: macro for fir list?3fir
28 Mar 24 i `* Re: macro for fir list?2fir
29 Mar 24 i  `- Re: macro for fir list?1fir
30 Mar 24 `* Re: macro for fir list?15Opus
30 Mar 24  `* Re: macro for fir list?14fir
30 Mar 24   +- Re: macro for fir list?1fir
30 Mar 24   `* Re: macro for fir list?12fir
30 Mar 24    `* Re: macro for fir list?11fir
30 Mar 24     +* Re: macro for fir list?9fir
30 Mar 24     i`* Re: macro for fir list?8bart
30 Mar 24     i +* Re: macro for fir list?6fir
30 Mar 24     i i`* Re: macro for fir list?5fir
30 Mar 24     i i `* Re: macro for fir list?4fir
30 Mar 24     i i  +- Re: macro for fir list?1fir
30 Mar 24     i i  +- Re: macro for fir list?1fir
30 Mar 24     i i  `- Re: macro for fir list?1fir
30 Mar 24     i `- Re: macro for fir list?1fir
30 Mar 24     `- Re: macro for fir list?1fir

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal