me acabo de enterar hoy que hubo uno (un poco) cambio significativo entre N1570 y el estándar C11 final (ISO/IEC 9899: 2011 (E)).
En N1570, 6.3.2p3 dice:
Excepto cuando es el operando del operador sizeof
, el operador _Alignof
, o el unario &
operador, o es una cadena literal utilizado para inicializar un array, una expresión que tiene el tipo "array type" es convertido a una expresión con tipo "puntero a tipo" que apunta al elemento inicial del objeto array y no es un valor l.
La inclusión de _Alignof
ha producido un error, ya que la sintaxis de un unario-expresión permisos
_Alignof (type-name)
pero no
_Alignof unary-expression
El estándar C11 liberado corrige este error y vuelve a la fraseología C99:
excepto cuando es el operando del operador sizeof
, o la unario &
operador, o es una cadena literal utilizado para inicializar una matriz, una expresión que tiene el tipo "array de tipo" se convierte en una expresión con tipo "puntero a tipo" que apunta al elemento inicial del objeto de matriz y no es un valor l.
Más información: en un mensaje reciente a comp.std.c sobre las diferencias entre N1570 y el estándar liberado, Larry Jones, un miembro del comité de la ISO C, escribió:
Hay una número de ellos, pero la mayoría son solo cambios editoriales menores, cambios en el texto repetitivo, y barajando las cosas para mantener los poderes que sean felices. El mayor cambio fue eliminar _Alignof de un grupo de lugares que no debería haber sido agregado (basado en la noción errónea de que toma un tipo o una expresión como sizeof does cuando realmente solo toma un tipo): 6.3. 2.1p2, p3, p4, fn. sesenta y cinco; y 6.7.1 fn. 121.
Message-ID: <[email protected]>
Así es como se ve en the thread groups.google.com.
de acuerdo con un comentario de Larry Jones en comp.std.c no hubo cambios significativos desde N1569 (que es N1570 sin marcadores de cambio). Lo único que queda sin resolver es el valor de '__STDC_VERSION__', pero supongo que de forma más natural será' 201112L'. –
Gracias por esa información, @JensGustedt. Por cierto, me vinculé con n1570 porque ese enlace es de acceso público; n1569 se puede descargar también, pero no directamente. –
@JohanBezem, ¿incluso se olvidaron de eso? Entonces podemos emitir el primer informe de defectos :) Afortunadamente esto solo usa números enteros, por lo que cualquier cosa al probar contra '201100L' debería ser segura. –