> C'est la librairie C qui """gère""" ça. Si tu ne fais pas "#include
> <stdlib.h>", tu as une erreur de compilation :
> NULL : symbol non défini.
La norme dit que NULL est une macro. Si tu n'include pas stdlib.h, le préprocesseur laisse passer NULL et le compilo dit effectivement ça.
Maintentant la norme dit:
An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
The macro NULL is defined in <stddef.h> as a null pointer constant.
Le préprocesseur remplace NULL par 0 (ou (void *)0 ou 0L ou 0U, etc) et c'est bien le compilateur (ou le front-end, en tout cas c'est pas la lib) qui a la charge de convertir ce 'null pointer constant' en 'null pointer'.
[^] # Re: Petites precisions
Posté par Vivi . En réponse au journal J'adore Linus. Évalué à 2.
Si.
> C'est la librairie C qui """gère""" ça. Si tu ne fais pas "#include
> <stdlib.h>", tu as une erreur de compilation :
> NULL : symbol non défini.
La norme dit que NULL est une macro. Si tu n'include pas stdlib.h, le préprocesseur laisse passer NULL et le compilo dit effectivement ça.
Maintentant la norme dit:
Le préprocesseur remplace NULL par 0 (ou (void *)0 ou 0L ou 0U, etc) et c'est bien le compilateur (ou le front-end, en tout cas c'est pas la lib) qui a la charge de convertir ce 'null pointer constant' en 'null pointer'.