Est ((void*)0) un pointeur null constante?

Je suis en train de lire ce blog et en vertu de la section pointeur Null constantes et les expressions entre parenthèses l'auteur des références § 6.3.2.3 et § 6.5.1 de l'ISO C standard et dit:

Il n'est pas dire qu'une mise entre parenthèses de pointeur null constante est un pointeur null constante.

Ce qui implique, à proprement parler, que (void*)0 est un pointeur null
constante, mais ((void*)0) ne l'est pas.

Alors:

Je suis sûr que la plupart des implémentations C ne traiter une mise entre parenthèses de pointeur null constante comme un pointeur null constante, et de définir NULL soit comme 0, ((void*)0), ou de quelque autre manière.

Les deux sections citées dire:

§ 6.3.2.3

Une constante entière expression avec la valeur 0, ou une expression
fonte de type void *, est appelé un pointeur null constante.

§ 6.5.1

Une mise entre parenthèses de l'expression est une expression primaire. Son type et sa valeur
sont identiques à ceux de la sans parenthèse expression.
C'est un
lvalue, une fonction de désignation, ou un vide d'expression si l'
sans parenthèse expression est, respectivement, une lvalue, une fonction
indicateur, ou un vide d'expression.

N'est pas la phrase en gras contredire le grief de l'auteur qui ((void*)0) n'est pas un pointeur null constante?

InformationsquelleAutor user4164058 | 2014-10-21