2012-06-15 11 views

Respuesta

27

El 199711L representa Año = 1997, Mes = 11 (es decir, Noviembre de 1997) - la fecha en que el comité aprobó la norma que el resto de la ISO aprobó a principios de 1998.

Para el 2003 estándar, hubo pocos cambios suficientes que el comité (al parecer) decidió dejar ese valor sin cambios.

Para el estándar de 2011, que se requiere para ser definido como 201103L, (de nuevo, año = 2011, mes = 03) de nuevo lo que significa que el comité aprobó la norma como fue aprobado en marzo del 2011.

Para el 2014 estándar, se requiere que se defina como 201402L, interpretado de la misma manera que en el anterior (febrero de 2014).

Para la norma 2017, se debe definir como 201703L (marzo de 2017).

Antes de que se aprobara el estándar original, bastantes compiladores normalmente lo definían en 0 (o simplemente una definición vacía como #define __cplusplus) para indicar "no conforme". Cuando se les pidió su conformidad más estricta, muchos lo definieron en 1.

Casi olvidé mencionar, pero un tidbit más sobre compiladores antiguos: algunas de las primeras versiones de cfront (y probablemente algunos otros que la copian) definieron c_plusplus en lugar de __cplusplus. Sin embargo, no recuerdo que se esté definiendo con ningún valor significativo.

+0

2003 fue un "revisión técnica", no es realmente un estándar. Se acaba de presentar el material "TR3" que nunca fue parte del estándar. –

+0

@MichaelJ: ["ISO/IEC JTC1/SC22/WG21 ha producido el estándar ISO/IEC 14882: 2003 en el lenguaje de programación C++. Fue publicado el 2003-10- 16. "] (http://www.open-std.org/jtc1/sc22/WG21/docs/standards). Tenga en cuenta que este es el resultado de un TC (corrigendum técnico) no un TR (informe técnico). TR es un documento separado, no una revisión de la norma. –

+0

No dije que era un TR, dije que presentó el material TR3, y lo hizo. El documento publicado en 2003 fue el de 1998. andard más la CA. No era un nuevo estándar de C++ y el estándar de 1998 no se modificó de ninguna manera. –

2

Eso significa que es compatible con el estándar 1997, C++ (en realidad, conocido como C++ '98, ya que tomó demasiado tiempo para ratificarlo ..

Cuestiones relacionadas