language c macros iso c11

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.