Onde encontro os documentos padrão atuais em C ou C ++?


394

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

4
Observe a discussão no MSO . As respostas a esta pergunta são valiosas para programadores de C e C ++; ele deve ser deixado em aberto (principalmente porque há um padrão C ++ 2014 a ser adicionado às respostas, uma vez publicado, já aprovado).
31814 Jonathan Leffler

Respostas:


439

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:

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:

Para C ++:

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.


60
O problema com o livro de Schildt é que seus comentários desvalorizam severamente o padrão sobre o qual ele comenta.
SBI

57
Recomendação de livro muito ruim (Herb Schildt), Veja isto: lysator.liu.se/c/schildt.html
Wiz

11
Estou ciente da resenha - mencionei o livro apenas como uma maneira possível de obter o padrão de forma barata. Mas suponho que as pessoas também devam conhecer a revisão. Eu sugiro que você ignore a parte da anotação do livro, se você quiser a cópia impressa padrão barata (é isso que eu faço).
Michael Burr

37
O livro de Schildt (que acho que está esgotado) era muito mais barato que uma cópia impressa do padrão atual. Foi sugerido que a diferença de preço reflete o valor das anotações. Cada cópia do livro deve ser acompanhada de uma impressão do padrão The Annotated Annotated C Standard de Clive DW Feather . (Note que algum material introdutório está faltando do livro de Schildt.)
Keith Thompson

12
@ MichaelBurr, todo o padrão pode ser encontrado gratuitamente em www.open-std.org, já que você tem a resposta aceita, que tal mudar os links para os gratuitos?
precisa

429

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


11
Você pode mencionar a que padrão os links o levam! Também adicionando o padrão C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz

@ Shahbaz: Eu não estou familiarizado com todas as cópias do padrão C (como eu não escrevo código C (apenas C ++)). Você pode começar sua própria resposta ou editar uma das respostas abaixo que lide explicitamente com o idioma C (veja a abaixo).
Martin York

17
+1 por manter uma lista constantemente mais atualizada do que o grupo de trabalho ISO 21 .
Lundin

5
+1 para a lista; apenas para adicionar que todos os rascunhos estão disponíveis como repositório git github.com/cplusplus/draft . Você poderia adicionar o link para isocpp.org/std/the-standard
PEPR

@ ShafikYaghmour: Parece que eles o trancaram (o que geralmente significa que é um lançamento oficial). Eu atualizei com links para a versão que requer autenticação (ou seja, você pagou por isso).
Martin York


26

Rascunhos de links:

C ++ 11 (+ correções editoriais): N3337 HTML , PDF

C ++ 14 (+ correções editoriais): N4140 HTML , PDF

C11 N1570 ( texto )

C99 N1256

Os rascunhos da Norma são divulgados para comentários antes da ratificação e publicação.

Observe que um rascunho de trabalho não é o padrão atualmente em vigor e não é exatamente o padrão publicado


O link "N1169" vai para um documento de quatro páginas contendo alguns relatórios de defeitos. Não é de forma alguma um rascunho do padrão C ++ (ou qualquer outro).
Gareth McCaughan

Gosto dessa resposta porque deixa claro qual é o rascunho mais recente de cada versão principal.
Ciro Santilli publicou


12

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.


7

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 .


11
Apenas uma observação sobre a versão impressa para o C Standard da Wiley: é o C99, não o C89 / 90.
227 Michael Burr

4

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.


Atualmente, o techstreet.com possui o padrão C ++ 2003 em formato PDF por US $ 30 e o padrão C ++ 2011 por US $ 403.
Keith Thompson

Muito obrigado pelo link para Techstreet. A loja virtual da ANSI.org não me vendeu o padrão C11 (recusar o cartão de crédito por razões de "segurança", ou seja, não é uma boa razão), enquanto a compra com preço equivalente (com o mesmo cartão) na Techstreet ocorreu sem problemas e sem um pegar.
Arto Bendiken

4

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.


24
A documentação do compilador é importante, mas conhecer o idioma em vez de conhecer sua implementação é muito mais.
Spidey

2
Com o padrão atual, você pode encontrar bugs nos compiladores e ajudá-los a seguir melhor o padrão corrigindo-os, enviando relatórios de bugs ou simplesmente entrando em uma sala de IRC e conversando com alguém que possa corrigi-lo.
hdante

3
@hdante - absolutamente. Quando você tem o próprio padrão como o ideal, pode exigir compatibilidade do fornecedor. @ / all - A intenção aqui não era dizer que o padrão não é útil (para sua informação, ir do primeiro é a abordagem que adotei no passado), mas que você precisa conhecer também o ponto de partida do mundo real, espero que esteja alinhado com os padrões.
Kris Kumler #

6
A documentação do compilador tende a deixar de fora o material coberto pelos padrões, de qualquer maneira.
SamB 25/03

4

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.


É realmente o último rascunho? Uma diferença que eu estou ciente de que este projecto especifica o intervalo de tm_sec ser [0, 60], enquanto C90 (incorretamente)[0, 61]
Cubbi

@ Cubbi, já que não posso provar isso pessoalmente, modifiquei a redação. Obrigado.
precisa saber é

@ Cubbi: ele disse que era o último rascunho do padrão ANSI . Parece que alguém no ISO WG ficou confuso e pensou que os possíveis dois segundos bissextos em um ano também poderiam acontecer no / após o mesmo minuto ... Ou eles receberam o erro do POSIX, que não diz onde o conseguiu. de, apenas que eles o consertaram para alinhar com C99.
SamB 25/03

K&R 2nd Ed. (ANSI C), que é não com base no padrão final real, faz especificar que tm_secé (0, 61). Eu pensei que era por alguns segundos bissextos, faz sentido.
veganaiZe

@veganaiZe O intervalo é [0, 60] para permitir segundos bissextos (caso contrário, seria [0, 59]). [0, 61] foi um erro, implicando que seria possível ter dois segundos bissextos no mesmo minuto (não é).
9788 Keith Thompson #

2

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=c94na 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 .

Quando o (então rascunho) Padrão ANSI C estava sendo considerado para a adoção de um Padrão Internacional em 1990, havia várias objeções porque não tratava de questões de internacionalização. Como a Norma já havia vários anos em elaboração, foi acordado que algumas alterações seriam feitas para fornecer a base (por exemplo, as funções na subcláusula 7.10.7 foram adicionadas) e o trabalho seria realizado separadamente para fornecer internacionalização adequada da Norma. Este trabalho culminou no Adendo Normativo 1.

O Adendo Normativo 1 incorpora a reação de C às limitações e promessas dos conjuntos de caracteres internacionais. Os dígrafos e o cabeçalho foram criados para melhorar a aparência dos programas C escritos em variantes nacionais da ISO 646 sem, por exemplo, {ou} caracteres. No outro extremo do espectro, as instalações conectadas e ampliam a base quase adequada do antigo Padrão em um conjunto completo e consistente de utilitários para lidar com caracteres largos e seqüências de caracteres de vários bytes.

Este documento resume o Adendo Normativo 1. Destina-se a informar rapidamente os leitores que já estão familiarizados com o Padrão; não introduz, e não pode, introduzir o assunto complexo por trás do NA1, nem substituir o documento original como um manual de referência. (No entanto, ele tenta ser o mais preciso possível, e seu autor gostaria de ouvir sobre quaisquer erros ou omissões.)


-6

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:

Este site contém uma versão modificada do N1256. Inclui palavras que foram excluídas do C99 (ou seja, marcadas através do formulário) e palavras que costumavam aparecer no C99 (ou seja, no formato sublinhado).


2
O site é inútil, pois a maioria das páginas está em branco.
Nisse Engström

Este site é realmente uma porcaria total.
MD XF
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.