NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Emmanuel Delahaye
In 'fr.comp.lang.c', AG wrote:
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Ce n'est pas l'utilisateur (le programmeur) qui décide (il se contente d'utiliser la macro NULL). C'est l'implémenteur (celui qui écrit le compilateur et qui fourni les headers qui vont avec).
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', AG <AG@tb.fr> wrote:
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une
spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Ce n'est pas l'utilisateur (le programmeur) qui décide (il se contente
d'utiliser la macro NULL). C'est l'implémenteur (celui qui écrit le
compilateur et qui fourni les headers qui vont avec).
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Ce n'est pas l'utilisateur (le programmeur) qui décide (il se contente d'utiliser la macro NULL). C'est l'implémenteur (celui qui écrit le compilateur et qui fourni les headers qui vont avec).
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', Jean-Marc Bourguet wrote:
AG writes:
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', "Anthony Fleury"
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre. Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique. La norme dit que NULL supporte deux implémentations :
#define NULL 0 et #define NULL ((void*)0)
Et utilise parfois pour d'autre choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte 'pointeur'. Si celui-ci n'est pas explicite, il faut un cast.
Ca pose des problemes sur les machines ou sizeof(int) != sizeof(void*) quand on passe des pointeurs a des fonctions sans prototypes (cas moins frequent de nos jours) ou ayant un nombre variable de parametres (cas toujours existant) car il faut caster NULL en (void*) pour que le passage se fasse correctement -- erreur generalement indetectable sur les autres architectures.
Oui. Mais c'est parce que dans le cas des fonctons variadics, le type n'est pas explicite. Il faut donc 'forcer' (caster) en (void*).
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Jean-Marc Bourguet <jm@bourguet.org> wrote:
AG <AG@tb.fr> writes:
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', "Anthony Fleury"
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une
spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique. La norme dit que NULL supporte deux
implémentations :
#define NULL 0
et
#define NULL ((void*)0)
Et utilise parfois pour d'autre
choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte 'pointeur'. Si
celui-ci n'est pas explicite, il faut un cast.
Ca pose des problemes sur les machines ou sizeof(int) != sizeof(void*)
quand on passe des pointeurs a des fonctions sans prototypes (cas
moins frequent de nos jours) ou ayant un nombre variable de parametres
(cas toujours existant) car il faut caster NULL en (void*) pour que le
passage se fasse correctement -- erreur generalement indetectable sur
les autres architectures.
Oui. Mais c'est parce que dans le cas des fonctons variadics, le type n'est
pas explicite. Il faut donc 'forcer' (caster) en (void*).
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre. Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique. La norme dit que NULL supporte deux implémentations :
#define NULL 0 et #define NULL ((void*)0)
Et utilise parfois pour d'autre choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte 'pointeur'. Si celui-ci n'est pas explicite, il faut un cast.
Ca pose des problemes sur les machines ou sizeof(int) != sizeof(void*) quand on passe des pointeurs a des fonctions sans prototypes (cas moins frequent de nos jours) ou ayant un nombre variable de parametres (cas toujours existant) car il faut caster NULL en (void*) pour que le passage se fasse correctement -- erreur generalement indetectable sur les autres architectures.
Oui. Mais c'est parce que dans le cas des fonctons variadics, le type n'est pas explicite. Il faut donc 'forcer' (caster) en (void*).
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', "manu l." wrote:
<définition de NULL>
De plus, elle est d'après la norme, définie dans <stddef.h>
Dans <locale.h>, <stddef.h>, <stdio.h>, <stdlib.h>, <string.h> et <time.h>
La norme n'impose que <stddef.h>. Les implémentations peuvent faire plus si elles le juge nécessaire...
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "manu l." <lacide_manu@hotmail.com> wrote:
<définition de NULL>
De plus, elle est d'après la norme, définie dans <stddef.h>
Dans <locale.h>, <stddef.h>, <stdio.h>, <stdlib.h>, <string.h> et <time.h>
La norme n'impose que <stddef.h>. Les implémentations peuvent faire plus si
elles le juge nécessaire...
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
De plus, elle est d'après la norme, définie dans <stddef.h>
Dans <locale.h>, <stddef.h>, <stdio.h>, <stdlib.h>, <string.h> et <time.h>
La norme n'impose que <stddef.h>. Les implémentations peuvent faire plus si elles le juge nécessaire...
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Jean-Marc Bourguet
Emmanuel Delahaye writes:
In 'fr.comp.lang.c', Jean-Marc Bourguet wrote:
AG writes:
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', "Anthony Fleury"
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre. Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique.
J'entendais avant la norme (de 89 si tu veux etre sur).
Et utilise parfois pour d'autre choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte 'pointeur'. Si celui-ci n'est pas explicite, il faut un cast.
Quelle quantite de code d'avant 89 as-tu manipule?
A+
-- Jean-Marc FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Emmanuel Delahaye <emdelYOURBRA@noos.fr> writes:
In 'fr.comp.lang.c', Jean-Marc Bourguet <jm@bourguet.org> wrote:
AG <AG@tb.fr> writes:
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', "Anthony Fleury"
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une
spécificité de ton implémentation par contre.
Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique.
J'entendais avant la norme (de 89 si tu veux etre sur).
Et utilise parfois pour d'autre choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte
'pointeur'. Si celui-ci n'est pas explicite, il faut un cast.
Quelle quantite de code d'avant 89 as-tu manipule?
A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
NULL est défini par la norme du C. <...> Sa valeur ( (void*) 0 est une spécificité de ton implémentation par contre. Non. C'est une des façons standard de définir NULL. L'autre étant
#define NULL 0
Et en fonction de quoi choisi-t-on l'une plutot que l'autre ?
Classiquement, NULL etait defini a 0.
Je ne vois pas ce qu'il y a de classique.
J'entendais avant la norme (de 89 si tu veux etre sur).
Et utilise parfois pour d'autre choses que des pointeurs.
Certainement pas. NULL n'a un sens que dans le strict contexte 'pointeur'. Si celui-ci n'est pas explicite, il faut un cast.
Quelle quantite de code d'avant 89 as-tu manipule?
A+
-- Jean-Marc FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc Site de usenet-fr: http://www.usenet-fr.news.eu.org
manu l.
"Emmanuel Delahaye" a écrit dans le message de news:
In 'fr.comp.lang.c', "manu l." wrote:
<définition de NULL>
De plus, elle est d'après la norme, définie dans <stddef.h>
Dans <locale.h>, <stddef.h>, <stdio.h>, <stdlib.h>, <string.h> et <time.h>
La norme n'impose que <stddef.h>. Les implémentations peuvent faire plus si
elles le juge nécessaire...
Et tu peux faire mieux, si tu le juges nécessaire :
"7.4 Localisation <locale.h>
(...) Les macros définies sont NULL (...)"
(C90)
Et je passe les autres.
Meilleures salutations.
-- manu l.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
"Emmanuel Delahaye" <emdelYOURBRA@noos.fr> a écrit dans le message de
news:Xns94029C210F569hsnoservernet@130.133.1.4...
In 'fr.comp.lang.c', "manu l." <lacide_manu@hotmail.com> wrote:
<définition de NULL>
De plus, elle est d'après la norme, définie dans <stddef.h>
Dans <locale.h>, <stddef.h>, <stdio.h>, <stdlib.h>, <string.h> et
<time.h>
La norme n'impose que <stddef.h>. Les implémentations peuvent faire plus
si
elles le juge nécessaire...
Et tu peux faire mieux, si tu le juges nécessaire :
"7.4 Localisation <locale.h>
(...) Les macros définies sont NULL (...)"
(C90)
Et je passe les autres.
Meilleures salutations.
--
manu l.
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/