Para muchas preguntas, la respuesta parece encontrarse en "el estándar". Sin embargo, ¿dónde encontramos eso? Preferiblemente en línea.
Googlear a veces puede parecer inútil, de nuevo especialmente para los estándares C, ya que se ahogan en la avalancha de discusiones en foros de programación.
Para comenzar esto, ya que estos son los que estoy buscando en este momento, ¿dónde hay buenos recursos en línea para:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
Respuestas:
Versiones PDF del estándar
A partir del 1 de septiembre de 2014, las mejores ubicaciones por precio para los documentos estándar C y C ++ en PDF son:
$ 60 de ansi.org$ 60 de Techstreet$ 30 de ansi.org$ 48 de SAI GlobalC ++ 98 - ISO / IEC 14882: 1998: $ 90 NZD (aproximadamente $ 60 US) de Standards New Zealand
C17 / C18 - ISO / IEC 9899: 2018: $ 185 de SAI Global / $ 116 de INCITS / ANSI / N2176 / c17_updated_proposed_fdis.pdf borrador de noviembre de 2017 (Enlace roto, ver Wayback Machine N2176 )
$ 30$ 60 de ansi.org / WG14 versión borrador N1570$ 30$ 60 de ansi.org / WG14 versión borrador N1256$ 141 de ansi.org$ 175 de Techstreet (la versión australiana de C90, idéntica a ISO 9899: 1990)Por lo general, no puede obtener revisiones antiguas de un estándar (cualquier estándar) directamente de los organismos de estándares poco después de que se publique una nueva edición del estándar. Por lo tanto, los estándares para C89, C90, C99, C ++ 98, C ++ 03 serán difíciles de encontrar en un organismo de estándares. Si necesita una revisión anterior de un estándar, marque Techstreet como una posible fuente. Por ejemplo, todavía puede proporcionar la versión canadiense CAN / CSA-ISO / IEC 9899: 1990 estándar en PDF, por una tarifa.
Versiones electrónicas no estándar del estándar
Versiones impresas del estándar
Las copias impresas de las normas están disponibles en los organismos nacionales de normalización e ISO, pero son muy caras.
Si desea una copia impresa de la norma C90 para la cantidad de dinero inferior al anterior, puede ser capaz de encontrar una copia usado barato de hierba Schildt libro 's La comentada norma ANSI en Amazon , que contiene el texto de la norma (útil) y comentarios sobre el estándar (menos útil, contiene varios errores peligrosos y engañosos).
Los estándares C99 y C ++ 03 están disponibles en forma de libro de Wiley y el BSI (British Standards Institute):
Versiones preliminares del comité de estándares (gratis)
Los borradores de trabajo para estándares futuros a menudo están disponibles en los sitios web del comité:
Si desea obtener borradores de los estándares actuales o anteriores de C / C ++, hay algunos disponibles de forma gratuita en Internet:
Para C:
ANSI X3.159-198 (C89):
No puedo encontrar un PDF de C89, pero es casi lo mismo que el siguiente borrador para ISO / IEC 9899: 1990 (C90). Las únicas diferencias están en la calderería y la numeración de secciones.
ISO / IEC 9899: 1990 (C90):
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(Casi lo mismo que ANSI X3.159-198 (C89), excepto por la numeración frontal y la numeración de secciones. Tenga en cuenta que la conversión entre ANSI y el estándar ISO / IEC se ve dentro de este documento, el documento se refiere a su nombre como "ANSI / ISO : 9899/99 "aunque este no es el nombre correcto del estándar hecho posteriormente, el nombre correcto es" ISO / IEC 9899: 1990 ")
ISO / IEC 9899: 1999 (C99):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
ISO / IEC 9899: 2011 (C11):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ISO / IEC 9899: 2018 (C18):
https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf (N2176)
Para C ++:
ISO / IEC 14882: 1998 (C ++ 98):
http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf
ISO / IEC 14882: 2003 (C ++ 03):
https://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
ISO / IEC 14882: 2011 (C ++ 11):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
ISO / IEC 14882: 2014 (C ++ 14):
https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true
ISO / IEC 14882: 2017 (C ++ 17):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
Tenga en cuenta que estos documentos no son los mismos que el estándar, aunque las versiones justo antes de las reuniones que deciden sobre un estándar suelen estar muy cerca de lo que está en el estándar final. Las versiones FCD (Borrador del Comité Final) están protegidas con contraseña; necesitas estar en el comité de estándares para obtenerlos.
A pesar de que las versiones preliminares pueden estar muy cerca de las versiones finales ratificadas de los estándares, algunos de los editores de esta publicación le aconsejarán encarecidamente que obtenga una copia de los documentos reales, especialmente si planea citarlos como referencias. Por supuesto, los estudiantes hambrientos deben seguir adelante y usar los borradores si tienen poco dinero.
Parece que, si está dispuesto y puede esperar unos meses después de la ratificación de un estándar, buscar "INCITS / ISO / IEC" en lugar de "ISO / IEC" al buscar un estándar es la clave. Al hacerlo, uno de los editores de esta publicación pudo encontrar los estándares C11 y C ++ 11 a precios razonables. Por ejemplo, si busca "INCITS / ISO / IEC 9899: 2011" en lugar de "ISO / IEC 9899: 2011" en webstore.ansi.org , encontrará la versión PDF a un precio razonable.
El sitio https://wg21.link/ proporciona enlaces URL cortos al borrador de trabajo actual de C ++ y al borrador de estándares, y documentos del comité:
El borrador actual del estándar se mantiene como fuentes LaTeX en Github . Estas fuentes se pueden convertir a HTML usando cxxdraft-htmlgen . Los siguientes sitios mantienen páginas HTML así generadas:
Tim Song también mantiene versiones HTML y PDF generadas de Networking TS y Ranges TS.
fuente
Se pueden encontrar versiones en línea del estándar:
Borrador de trabajo, estándar para lenguaje de programación C ++
Las siguientes versiones preliminares de la norma :
Todas las siguientes son de descarga gratuita
(muchas de estas se pueden encontrar en este enlace principal de GitHub )
2020-01-14: N4849 git
2019-11-27: N4842 git
2019-10-08: N4835 git
2019-08-15: N4830 git
2019-06-17: N4820 git
2019-03-15: N4810 git
2019-01-21: N4800 git
2018-11-26: N4791 git
2018-10-08: N4778 git
2018-07-07: N4762 git
2018-05-07:N4750 git
2018-04-02: N4741 git
2018-02-12: N4727 git
2017-11-27: N4713 git
2017-10-16: N4700 git
2017-07-30: N4687 git
Este parece ser el nuevo estándar:
esta versión requiere autenticación
2017-03-21: N4660 es el borrador estándar de C ++ 17
Las siguientes versiones preliminares del estándar :
Todas las siguientes son de descarga gratuita
2017-03-21: N4659 git
2017-02-06: N4640 git
2016-11-28: N4618 git
2016-07-12: N4606 git
2016-05 -30: N4594 git
2016-03-19: N4582 git
2015-11-09: N4567 git
2015-05-22: N4527 git
2015-04-10: N4431 git
2014-11-19: N4296 git
Este parece ser el antiguo estándar C ++ 14 :
esta versión requiere autenticación
2014-10-07: N4140 git Esencialmente C ++ 14 con errores menores y errores tipográficos corregidos 2014-09-02
: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git
Las siguientes versiones preliminares de la norma :
Todas las siguientes son de descarga gratuita
2013-10-13: N3797 git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337 git Esencialmente C ++ 11 con errores menores y errores tipográficos corregidos
Este parece ser el antiguo estándar de C ++ 11 :
esta versión requiere autenticación
2011-04-05: N3291 C ++ 11 (o muy cerca)
Las siguientes versiones preliminares de la norma :
Todas las siguientes son de descarga gratuita
2011-02-28: N3242 (diferencias con respecto a N3291 muy pequeñas)
2010-11-27: N3225
2010-08-21: N3126
2010-03-29: N3090
2010-02-16: N3035
2009-11-09: N3000
2009-09-25: N2960
2009-06-22: N2914
2009-03-23: N2857
2008-10-04: N2798
2008-08-25: N2723
2008 -06-27: N2691
2008-05-19: N2606
2008-03-17: N2588
2008-02-04: N2521
2007-10-22: N2461
2007-08-06: N2369
2007-06-25: N2315
2007-05-07: N2284
2006-11-03: N2134
2006-04-21: N2009
2005-10-19: N1905
2005 -04-27: N1804
Este parece ser el antiguo estándar C ++ 03:
todas las versiones siguientes requieren autenticación
2004-11-05: N1733
2004-07-16: N1655 no oficial
2004-02-07: N1577 C ++ 03 (o muy cerca)
2001 -09-13: Borrador de corrección técnica ampliada
N1316 1997-00-00: Borrador de corrección técnica ampliado N1117
Las siguientes versiones preliminares de la norma :
Todas las siguientes son de descarga gratuita
1996-00-00: N0836 Borrador del Corrigendum técnico ampliado
1995-00-00: N0785 Documento de trabajo para el Anteproyecto de Norma Internacional para Sistemas de Información - Lenguaje de programación C ++
Otros documentos interesantes:
2020 / 2019 / 2018 / 2017 / el año 2016 / el año 2015 / 2014 / 2013 / 2012 / 2011
fuente
C99 está disponible en línea . Citado de www.open-std.org :
fuente
Enlaces de borrador:
C ++ 11 (+ correcciones editoriales): N3337 HTML , PDF
C ++ 14 (+ correcciones editoriales): N4140 HTML , PDF
C11 N1570 ( texto )
C99 N1256
fuente
Puede encontrar útil el borrador del estándar internacional para C ++ 0x.
fuente
Los estándares ISO cuestan dinero, desde una cantidad moderada (para una versión en PDF), hasta un poco más (para una versión de libro).
Sin embargo, aunque no están finalizados, generalmente se pueden encontrar en línea, como borradores. La mayoría de las veces la versión final no difiere significativamente del último borrador, por lo que si bien no es perfecta, se adaptarán perfectamente.
fuente
Los estándares C99 y C ++ 03 están disponibles en forma de libro de Wiley:
Además, como ya se mencionó, el borrador de trabajo para estándares futuros a menudo está disponible en los sitios web del comité:
El borrador C-201x está disponible como N1336 y el borrador C ++ 0x como N3225 .
fuente
Los estándares ISO C y C ++ son muy caros. Por otro lado, los INCITS los republican por mucho menos. http://www.techstreet.com/ parece tener el PDF por $ 30 (busque INCITS / ISO / IEC 14882: 2003).
Las versiones impresas también están disponibles. Busque las versiones del British Standards Institute, publicadas por Wiley.
fuente
Los documentos de normas reales pueden no ser los más útiles. La mayoría de los compiladores no implementan completamente los estándares y en ocasiones pueden entrar en conflicto. Entonces la documentación del compilador que ya tendría será más útil. Además, la documentación contendrá comentarios y notas específicos de la plataforma sobre cualquier advertencia.
fuente
El texto de un borrador del estándar ANSI C (también conocido como C.89) está disponible en línea. Esto fue estandarizado por el comité ANSI antes de la aceptación del estándar ISO C (C.90), por lo que la numeración de las secciones difiere (las secciones ANSI 2 a 4 corresponden aproximadamente a las secciones ISO 5 a 7), aunque el contenido es (se supone ser) en gran medida idéntico.
fuente
[0, 60]
, mientras que C90 (incorrectamente)[0, 61]
tm_sec
es(0, 61)
. Pensé que era por segundos bisiestos, tiene sentido.Aunque no es un estándar real, hay una enmienda a ISO C (C89 / 90) llamada C94 / 95, o Anexo Normativo 1. Se integró en C99, aunque algunos compiladores como Clang le permiten especificar
-std=c94
en la línea de comandos. ISO / IEC 9899: 1990 / Amd 1: 1995 se puede comprar por un alto precio en SAI GLOBAL (PDF o copia impresa).Un resumen del documento se puede encontrar aquí .
fuente
http://c0x.coding-guidelines.com/ contiene una versión del estándar C basada en HTML que se puede buscar. En realidad, una versión ligeramente modificada:
fuente