[SOS] Allocation Memoire Physique & Macro (List.h)

David MENTRE david.mentre at gmail.com
Jeu 20 Oct 13:58:33 CEST 2005


Salut romain,

Le 20/10/05, romain<romain at hexanium.com> a écrit :
> "Purée c bien en fait les macros !"
> (j'y etait un temps soit peut récalsitrant)

Non, les macros du langage C ne sont pas terribles. Il vaut mieux les
éviter ou tout du moins les utiliser parcimonieusement.

> Question 1:
[...]
> ((list)?((list)->prev):NULL)
>
> Je l'ai rencontré assez souvent, j'imagine que c'est un test, (simplifié
> en macro), j'imagine aussi que derriere les : c'est les paramtres de
> retour mais si j'essaye de comprendre j'en arrive a ça:
>
> Si list est égale a list->Prev alors le define équivaut à mettre NULL,
> quand je regarde le reste du source et le nom "Récupere la queue" et que
> la liste est circulaire j'imagine qu'elle retoure Head->Prev qui est
> bien la queue (la fin).

Pas du tout.

thetest ? true_case : false_case

est équivalent à :

 if (thetest) { true_case } else { false_case }

Donc, dans le cas de "((list)?((list)->prev):NULL)", ça veut dire :

 - si "list" vaut 0 (valeur Faux en C), alors retourner NULL ;

 - dans tous les autres cas retourner "((list)->prev)".

Amicalement,
d.


Plus d'informations sur la liste de diffusion Sos