language - ¿Cuál es el valor de__STDC_VERSION__ para C11?
iso 9899 (2)
Con -std=c11
en gcc
, 201112L
se usa para __STDC_VERSION__
Vea este parche de gcc
el 20 de diciembre de 2011 en gcc
ml:
http://www.mail-archive.com/[email protected]/msg23572.html
Y tenga en cuenta que, al parecer, la versión ISO de C11 olvidó actualizar el 201ymmL
del borrador.
El valor final previsto de ____STDC_VERSION____, 201112L, también se implementó (el editor olvidó actualizar los marcadores de posición de 201ymmL antes de enviar el documento para su publicación por ISO).
Ver también DR # 411 , que hace oficial que el valor deseado sea 201112l
. El editor ha dicho que "el comité está tratando de que se apruebe como TC lo antes posible". . (TC = "Corrigendum Técnico")
EDITAR (16 de julio de 2012): el corrigendum técnico 1 ( ISO / IEC 9899: 2011 / Cor 1: 2012 ) publicado el 15 de julio de 2012 corrige el __STDC_VERSION__
a 201112L
.
Sé que los compiladores usan __STDC__
para indicar que un compilador es C estándar y, desde ahí, puede usar __STDC_VERSION__
para averiguar qué nivel de la norma está usando.
También sé que C90 no tenía valor, la enmienda 1 de C90 tenía 199401L
y C99 tenía 199901L
.
El último borrador C1x simplemente lo 201ymmL
como 201ymmL
y 201ymmL
que se hizo un valor menos "vago" en la norma final.
Mi conjetura es que será 201112L
ya que fue cuando se ratificó el C11, pero me gustaría estar seguro.
Pensé que podría intentar usar gcc -std=c1x
pero la versión de gcc
que estoy ejecutando todavía no es compatible.
¿Alguien sabe cuál es el valor real?
Según this publicación en la lista de correo de GCC, el valor final es, como sospechaba, 201112L.