Je viens d'apprendre aujourd'hui qu'il y a eu (un peu) de changement significatif entre N1570 et la finale C11 norme (ISO/IEC 9899:2011 (E)).
Dans N1570, 6.3.2p3 dit:
Sauf quand c'est l'opérande de l' sizeof
de l'opérateur, l' _Alignof
l'opérateur, ou unaire &
de l'opérateur ou est un littéral de chaîne utilisé pour
initialiser un tableau, une expression qui a le type "tableau de type" est
converti à une expression de type "pointeur de type" que les points de
pour le premier élément de l'objet de tableau et n'est pas une lvalue.
L'inclusion d' _Alignof
a été une erreur, puisque la syntaxe d'un unaire-expression de permis
_Alignof ( type-name )
mais pas
_Alignof unary-expression
Publié le C11 standard corrige cette erreur et revient à la C99 libellé:
Sauf quand c'est l'opérande de l' sizeof
de l'opérateur, ou le
unaire &
de l'opérateur ou est un littéral de chaîne utilisée pour initialiser un tableau, un
expression de type "tableau de type" est converti en un
expression de type "pointeur de type" qui pointe à la première
élément de l'objet tableau et n'est pas une lvalue.
Plus d'informations: dans une récente publication de comp.std.c sur les différences entre les N1570 et l'a publié la norme, Larry Jones, membre de l'ISO C comité, a écrit:
Il y a un certain nombre d'entre eux, mais la plupart sont simplement rédactionnelles mineures réglages,
modifications de texte standard, et traînant les choses pour garder le
les pouvoirs que d'être heureux. Le changement le plus important a été de retirer _Alignof à partir d'un
des tas d'endroits, il ne devrait pas avoir été ajouté (basé sur le erronée
notion qu'il faut être soit un type ou une expression comme sizeof n'
quand il ne prend vraiment un type): 6.3.2.1p2, p3, p4, fn. 65; et
6.7.1 fn. 121.
Message-ID: <rfg33a-u0q.ln1@jones.homeip.net>
Voici le fil comme on le voit sur groups.google.com.