On Monday 19 November 2001 14:28, Frederic Giroud wrote:
> > utilisation du 0 normal, plutot que de toute macro NULL
> > Le nombre de problemes est ainsi considerablement reduit.
>
> je ne vois pas quel sont ces problemes.
Stroustrup fait reference aux problemes de typage. Avec une macro, tu ne
peux pas avoir de verification de ce type. Donc pas 'serieux'. Ceci dit,
ca marchera dans 99.9999999% des cas, je te l'accorde.
> > const int NULL = 0;
>
> si je fais :
> const int NULL = 0;
> dans un de mes sources, le compilateur (g++) me dit:
> xxx.cpp:156: parse error before `__null'
>
> Je ne pense pas que declarer une variable ayant pour nom
> `NULL' soir quelques choses a recommender
Ce qui prouve que g++ n'est pas aussi 'au top' que ca. Il ne suit pas les
recommendations de Stroustrup, qui preconise justement de forcer le type
int a NULL, pour les verifications de type.
> J'ai souvent entendu dire que pour des raison de portabilite
> "theorique" il valait mieux faire le test `lines_cop != NULL'
> que de ce fier au caste d'un pointeur en booléen
> (en imaginant un systeme ayant pour convention NULL= OxFFFF
> plutot que NULL=Ox0000)
>
> Personnellement, je n'ai jamais vue de systeme de ce type et
> j'utilise les 2 ecritures...
Voici ce qui precedait le petit extrait que j'ai mis tout a l'heure:
"Zero (0) est un int. En raison des conversions standards, 0 peut etre
utilise comme constante de tout type integral (bool, char et int), virgule
flottante, pointeur, ou pointeur de membre. Le type de 0 sera ensuite
determine par le contexte. 0 sera generalement (mais pas necessairement)
represente par le modele de bit tous nuls de la taille appropriee.
Aucun objet n'est alloue avec l'adresse 0. Par consequent, 0 se comporte
comme une litterale pointeur, indiquant qu'un pointeur ne fait pas
reference a un objet."
C'est clair. Il vaut donc mieux utiliser (!trucmuche) dans le test.
Maintenant, chacun fait comme il veut, mais j'ajouterai simplement que la
personne qui nous a fait le cours sur le C++ allait egalement dans ce
sens. En gros, NULL n'est pas sense exister en C++.
--
Frederic