Para muitas perguntas, a resposta parece ser encontrada no "padrão". No entanto, onde encontramos isso? De preferência online.
Às vezes, pesquisar no Google pode parecer inútil, especialmente para os padrões C, uma vez que são afogados na enxurrada de discussões em fóruns de programação.
Para começar, já que estou procurando neste momento, onde existem bons recursos on-line para:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
Respostas:
Versões em PDF do padrão
Desde 1º de setembro de 2014, as melhores localizações por preço dos documentos de padrões C e C ++ em PDF são:
US $ 60 da ansi.orgUS $ 60 da TechstreetUS $ 30 da ansi.orgUS $ 48 da SAI GlobalC ++ 98 - ISO / IEC 14882: 1998: US $ 90 NZD (cerca de US $ 60 EUA) das normas da Nova Zelândia
C17 / C18 - ISO / IEC 9899: 2018: US $ 185 da SAI Global / US $ 116 da INCITS / ANSI / N2176 / c17_updated_proposed_fdis.pdf rascunho de novembro de 2017 (link quebrado, consulte Wayback Machine N2176 )
$ 30$ 60 do ansi.org / WG14 versão preliminar N1570$ 30$ 60 do ansi.org / WG14 versão preliminar N1256US $ 141 da ansi.orgUS $ 175 da Techstreet (a versão australiana do C90, idêntica à ISO 9899: 1990)Normalmente, não é possível obter revisões antigas de um padrão (qualquer padrão) diretamente dos órgãos de padrões logo após o lançamento de uma nova edição do padrão. Portanto, é difícil encontrar os padrões para C89, C90, C99, C ++ 98, C ++ 03 para compra de um órgão de padrões. Se você precisar de uma revisão antiga de um padrão, verifique o Techstreet como uma fonte possível. Por exemplo, ele ainda pode fornecer a versão canadense CAN / CSA-ISO / IEC 9899: 1990 em PDF, por uma taxa.
Versões eletrônicas não PDF do padrão
Versões impressas do padrão
Cópias impressas dos padrões estão disponíveis nos órgãos nacionais de padrões e ISO, mas são muito caras.
Se você quiser uma cópia impressa do padrão C90 por muito menos dinheiro do que acima, poderá encontrar uma cópia barata do livro de Herb Schildt The Annotated ANSI Standard na Amazon , que contém o texto real do padrão (útil) e comentário sobre o padrão (menos útil - contém vários erros perigosos e enganosos).
Os padrões C99 e C ++ 03 estão disponíveis em formato de livro na Wiley e no BSI (British Standards Institute):
Versões preliminares do comitê de normas (grátis)
Os rascunhos de trabalho para padrões futuros geralmente estão disponíveis nos sites do comitê:
Se você deseja obter rascunhos dos padrões C / C ++ atuais ou anteriores, existem alguns disponíveis gratuitamente na Internet:
Para C:
ANSI X3.159-198 (C89):
Não consigo encontrar um PDF do C89, mas é quase o mesmo que o rascunho abaixo para ISO / IEC 9899: 1990 (C90). As únicas diferenças estão na numeração padrão e na seção.
ISO / IEC 9899: 1990 (C90):
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(Quase o mesmo que ANSI X3.159-198 (C89), exceto pelo número da frente e da seção. Observe que a conversão entre o ANSI e o padrão ISO / IEC é vista neste documento, o documento se refere ao seu nome como "ANSI / ISO : 9899/99 ", embora esse não seja o nome correto do padrão mais recente, o nome correto é" 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
Observe que esses documentos não são os mesmos do padrão, embora as versões anteriores às reuniões que decidem um padrão sejam geralmente muito próximas do que está no padrão final. As versões do FCD (Projeto final do comitê) são protegidas por senha; você precisa estar no comitê de padrões para obtê-los.
Embora as versões de rascunho possam estar muito próximas das versões finais ratificadas dos padrões, alguns dos editores deste post recomendam fortemente que você obtenha uma cópia dos documentos reais - especialmente se você planeja citá-los como referências. Obviamente, estudantes famintos devem seguir em frente e usar os rascunhos, se precisarem de dinheiro.
Parece que, se você estiver disposto e puder esperar alguns meses após a ratificação de um padrão, procurar "INCITS / ISO / IEC" em vez de "ISO / IEC" ao procurar um padrão é a chave. Ao fazer isso, um dos editores deste post conseguiu encontrar os padrões C11 e C ++ 11 a preços razoáveis. Por exemplo, se você pesquisar "INCITS / ISO / IEC 9899: 2011" em vez de "ISO / IEC 9899: 2011" em webstore.ansi.org , encontrará a versão em PDF com preços razoáveis.
O site https://wg21.link/ fornece links de URL curto para o rascunho de trabalho e padrões de rascunho atuais do C ++ e documentos do comitê:
O rascunho atual do padrão é mantido como fontes do LaTeX no Github . Essas fontes podem ser convertidas em HTML usando cxxdraft-htmlgen . Os sites a seguir mantêm as páginas HTML geradas:
Tim Song também mantém as versões HTML e PDF geradas do Networking TS e Ranges TS.
fonte
Versões on-line do padrão podem ser encontradas:
Rascunho de trabalho, padrão para linguagem de programação C ++
Todas as versões de rascunho do padrão
a seguir:Todas as seguintes podem ser baixadas gratuitamente
(muitas delas podem ser encontradas neste link principal do 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 o novo padrão:
Esta versão requer autenticação
21-03-2017: N4660 é o C ++ 17 Draft Standard
As seguintes versões de rascunho do padrão :
Todos os seguintes podem ser baixados gratuitamente em
2017-03-21: N4659 git
06-02-2017: 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 o antigo padrão C ++ 14 :
Esta versão requer autenticação
2014-10-07: N4140 git Essencialmente C ++ 14 com pequenos erros e erros corrigidos
2014-09-02: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git
A seguir, todos os projectos de versões do padrão :
todas as seguintes são livremente para download
2013/10/13: N3797 git
2013/05/16: N3691
2013/05/15: N3690
2012/11/02: N3485
2012-02-28: N3376-16-01-2012
: N3337 git Essencialmente C ++ 11 com pequenos erros e erros corrigidos
Esse parece ser o antigo padrão do C ++ 11 :
Esta versão requer autenticação
2011-04-05: N3291 C ++ 11 (ou muito próximo)
A seguir todas as versões de rascunho da norma :
Todos os seguintes são livremente transferível
2011-02-28: N3242 (diferenças de N3291 muito menor)
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 o antigo padrão do C ++ 03:
Todas as versões abaixo requerem autenticação
2004-11-05: N1733
2004-07-16: N1655 não oficial
2004-02-07: N1577 C ++ 03 (ou muito próximo)
2001 -09-13: N1316 Projecto expandido Técnico Rectificação
1997-00-00: N1117 Projecto expandido Rectificação Técnico
A seguir, todas as versões preliminares do padrão :
Todos os
itensa seguir podem ser baixados gratuitamente em1996-00-00: N0836 Corrigenda técnica expandida em rascunho
1995-00-00: N0785 Documento de trabalho para o rascunho da norma internacional proposta para sistemas de informação - linguagem de programação C ++
Outros artigos interessantes:
2020 / 2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011
fonte
C99 está disponível online . Citado em www.open-std.org :
fonte
Rascunhos de links:
C ++ 11 (+ correções editoriais): N3337 HTML , PDF
C ++ 14 (+ correções editoriais): N4140 HTML , PDF
C11 N1570 ( texto )
C99 N1256
fonte
Você pode achar útil o rascunho do padrão internacional para C ++ 0x.
fonte
Os padrões ISO custam dinheiro, de uma quantia moderada (para uma versão em PDF) até um pouco mais (para uma versão em livro).
Embora não sejam finalizados, no entanto, geralmente podem ser encontrados online, como rascunhos. Na maioria das vezes, a versão final não difere significativamente do último rascunho; portanto, embora não seja perfeita, elas se adequam perfeitamente.
fonte
Os padrões C99 e C ++ 03 estão disponíveis em formato de livro na Wiley:
Além disso, como já mencionado, o rascunho de trabalho para padrões futuros está frequentemente disponível nos sites dos comitês:
O rascunho C-201x está disponível como N1336 e o rascunho C ++ 0x como N3225 .
fonte
Os padrões ISO C e C ++ são muito caros. Por outro lado, os INCITS os republicam por muito menos. http://www.techstreet.com/ parece ter o PDF por US $ 30 (pesquise INCITS / ISO / IEC 14882: 2003).
Também estão disponíveis versões impressas. Procure as versões do British Standards Institute, publicadas por Wiley.
fonte
Os documentos normativos reais podem não ser os mais úteis. A maioria dos compiladores não implementa completamente os padrões e às vezes pode realmente entrar em conflito. Portanto, a documentação do compilador que você já possui será mais útil. Além disso, a documentação conterá observações e notas específicas da plataforma em quaisquer ressalvas.
fonte
O texto de um rascunho do padrão ANSI C (também conhecido como C.89) está disponível online. Isso foi padronizado pelo comitê ANSI antes da aceitação pelo padrão ISO C (C.90); portanto, a numeração das seções é diferente (as seções 2 a 4 da ANSI correspondem aproximadamente às seções 5 a 7 da ISO), embora o conteúdo seja (supostamente ser) em grande parte idêntica.
fonte
[0, 60]
, enquanto C90 (incorretamente)[0, 61]
tm_sec
é(0, 61)
. Eu pensei que era por alguns segundos bissextos, faz sentido.Embora não seja um padrão real, há uma alteração na ISO C (C89 / 90) chamada C94 / 95, ou Adendo Normativo 1. Ele foi integrado ao C99, embora alguns compiladores como o Clang permitam que você especifique
-std=c94
na linha de comando. A ISO / IEC 9899: 1990 / Amd 1: 1995 pode ser comprada por um preço elevado na SAI GLOBAL (PDF ou cópia impressa).Um resumo do documento pode ser encontrado aqui .
fonte
http://c0x.coding-guidelines.com/ contém uma versão pesquisável em HTML do padrão C. Na verdade, uma versão ligeiramente modificada:
fonte