Dove trovo gli attuali documenti standard C o C ++?


394

Per molte domande la risposta sembra trovarsi nello "standard". Tuttavia, dove lo troviamo? Preferibilmente online.

A volte googling può sembrare inutile, di nuovo soprattutto per gli standard C, poiché sono annegati nel diluvio delle discussioni sui forum di programmazione.

Per iniziare, poiché questi sono quelli che sto cercando in questo momento, dove ci sono buone risorse online per:

  • C89
  • C99
  • C11
  • C ++ 98
  • C ++ 03
  • C ++ 11
  • C ++ 14
  • C ++ 17

4
Nota la discussione su MSO . Le risposte a questa domanda sono preziose per i programmatori C e C ++; dovrebbe essere lasciato aperto (non ultimo perché c'è uno standard C ++ 2014 da aggiungere alle risposte, una volta che è stato pubblicato - è già stato approvato).
Jonathan Leffler,

Risposte:


439

Versioni PDF dello standard

A partire dal 1 ° settembre 2014, le migliori posizioni per prezzo per i documenti sugli standard C e C ++ in PDF sono:

Di solito non è possibile ottenere vecchie revisioni di uno standard (qualsiasi standard) direttamente dagli organismi di standardizzazione poco dopo il rilascio di una nuova edizione dello standard. Pertanto, gli standard per C89, C90, C99, C ++ 98, C ++ 03 saranno difficili da trovare per l'acquisto da un organismo di standardizzazione. Se hai bisogno di una vecchia revisione di uno standard, controlla Techstreet come una possibile fonte. Ad esempio, può ancora fornire a pagamento la versione canadese CAN / CSA-ISO / IEC 9899: 1990 in PDF.

Versioni elettroniche non PDF dello standard

Stampa le versioni dello standard

Copie stampate degli standard sono disponibili presso gli organismi di standard nazionali e ISO, ma sono molto costosi.

Se si desidera una copia cartacea dello standard C90 per molto meno soldi di quanto sopra, si può essere in grado di trovare una copia usata a buon mercato di Herb Schildt libro 's The Annotated ANSI standard a Amazon , che contiene il testo effettivo della norma (utile) e commento sullo standard (meno utile - contiene diversi errori pericolosi e fuorvianti).

Gli standard C99 e C ++ 03 sono disponibili in formato libro da Wiley e BSI (British Standards Institute):

Bozze di versioni standard del comitato (gratuite)

I progetti di lavoro per gli standard futuri sono spesso disponibili sui siti Web del comitato:

Se vuoi ottenere bozze dagli standard C / C ++ attuali o precedenti, ce ne sono alcuni disponibili gratuitamente su Internet:

Per C:

Per C ++:

Si noti che questi documenti non sono gli stessi dello standard, sebbene le versioni appena prima delle riunioni che decidono su uno standard siano in genere molto simili a quelle dello standard finale. Le versioni FCD (Final Committee Draft) sono protette da password; devi far parte del comitato degli standard per ottenerli.

Anche se le bozze delle versioni potrebbero essere molto simili alle versioni ratificate finali degli standard, alcuni redattori di questo post consigliano vivamente di ottenere una copia dei documenti effettivi, soprattutto se si prevede di citarli come riferimenti. Naturalmente, gli studenti affamati dovrebbero andare avanti e usare le bozze se legate per denaro.


Sembra che, se si è disposti e in grado di attendere qualche mese dopo la ratifica di uno standard, cercare "INCITS / ISO / IEC" anziché "ISO / IEC" quando si cerca uno standard è la chiave. In questo modo, uno dei redattori di questo post è stato in grado di trovare gli standard C11 e C ++ 11 a prezzi ragionevoli. Ad esempio, se cerchi "INCITS / ISO / IEC 9899: 2011" anziché "ISO / IEC 9899: 2011" su webstore.ansi.org troverai la versione PDF a prezzi ragionevoli.


Il sito https://wg21.link/ fornisce collegamenti URL brevi all'attuale bozza di lavoro del C ++ e bozze di standard e documenti del comitato:


L'attuale bozza dello standard viene mantenuta come fonti LaTeX su Github . Queste fonti possono essere convertite in HTML usando cxxdraft-htmlgen . I seguenti siti mantengono le pagine HTML così generate:

Tim Song mantiene anche le versioni HTML e PDF generate di Networking TS e Ranges TS.


60
Il problema con il libro di Schildt è che i suoi commenti svalutano gravemente lo standard su cui commenta.
sabato

57
Raccomandazione del libro pessimo (Herb Schildt's), vedi questo: lysator.liu.se/c/schildt.html
Wiz,

11
Sono a conoscenza della recensione - menziono il libro solo come un modo possibile per ottenere lo standard in modo economico. Ma suppongo che le persone dovrebbero sapere anche della recensione. Suggerirei di ignorare la parte di annotazione del libro se si desidera la copia cartacea standard economica (è quello che faccio).
Michael Burr,

37
Il libro di Schildt (che penso sia fuori catalogo) era molto più economico di una copia stampata dello standard attuale. È stato suggerito che la differenza di prezzo riflette il valore delle annotazioni. Ogni copia del libro deve essere accompagnata da una stampa di The Annotated C Annotated C Standard di Clive DW Feather . (Notare che manca del materiale introduttivo dal libro di Schildt.)
Keith Thompson,

12
@MichaelBurr, tutti gli standard possono essere trovati gratuitamente su www.open-std.org poiché hai la risposta accettata, che ne dici di cambiare i collegamenti con quelli gratuiti?
Shahbaz,

429

Le versioni online dello standard sono disponibili:

Bozza di lavoro, standard per il linguaggio di programmazione C ++

Le seguenti versioni di bozza dello standard :
Tutte le seguenti sono scaricabili liberamente
(molte di queste sono disponibili in questo link GitHub principale )
14-01-2010: N4849 git
27-11-2019: 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
07-07-2018: N4762 git
07-05-2018: 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

Questo sembra essere il nuovo standard: questa
versione richiede l'autenticazione
21-03-2017: N4660 è lo standard di bozza C ++ 17

Le seguenti versioni bozza dello standard :
Tutte le seguenti sono scaricabili gratuitamente
21-03-2017: N4659 git
2017-02-06: N4640 git
28-11-2016: N4618 git
2016-07-12: N4606 git
2016-05 -30: N4594 git
19-03-2016: N4582 git
2015-11-09: N4567 git
2015-05-22: N4527 git
2015-04-10: N4431 git
2014-11-19: N4296 git

Questo sembra essere il vecchio standard C ++ 14 : questa
versione richiede l'autenticazione 2014-10-07
: N4140 git Essenzialmente C ++ 14 con errori minori e errori di battitura corretti
2014-09-02: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git

Di seguito sono riportate tutte le versioni bozze dello standard :
Tutte le seguenti versioni sono scaricabili liberamente
13-10-2013: N3797 git
16/05/2013: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337 git Essenzialmente C ++ 11 con errori minori e errori di battitura corretti

Questo sembra essere il vecchio standard C ++ 11 :
questa versione richiede l'autenticazione
2011-04-05: N3291 C ++ 11 (o molto vicino)

Le seguenti bozze dello standard :
Tutte le seguenti sono scaricabili gratuitamente 28/02/2011
: N3242 (differenze da N3291 molto minori) 27/11/2010
: N3225
2010-08-21: N3126
2010-03-29: N3090
16/02/2010: 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 17-03-2008
: N2588
2008-02-04: N2521
: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

Questo sembra essere il vecchio standard C ++ 03:
Tutte le versioni seguenti richiedono l'autenticazione
2004-11-05: N1733
2004-07-16: N1655 Unofficial
2004-02-07: N1577 C ++ 03 (Or Very Close)
2001 -09-13: Rettifica tecnica ampliata bozza N1316
1997-00-00: Rettifica tecnica ampliata bozza N1117


Tutte le seguenti versioni di bozza della norma :Tutte le seguenti sono scaricabili gratuitamente
1996-00-00: N0836 Progetto di rettifica tecnica estesa
1995-00-00: N0785 Documento di lavoro per il progetto di norma internazionale proposta per i sistemi di informazione - Linguaggio di programmazione C ++

Altri documenti interessanti:

Il 2020 / 2019 / il 2018 / il 2017 / il 2016 / il 2015 / il 2014 / 2013 / 2012 / 2011


1
Potresti voler menzionare a quale standard ti portano i link! Aggiungendo anche lo standard C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz

@Shahbaz: non ho familiarità con tutte le copie dello standard C (poiché non scrivo codice C (solo C ++)). Potresti voler iniziare la tua risposta o modificare una delle risposte di seguito che si occupa esplicitamente del linguaggio C (vedi quella qui sotto).
Martin York,

17
+1 per mantenere un elenco che è costantemente più aggiornato del gruppo di lavoro ISO 21 .
Lundin,

5
+1 per l'elenco; solo per aggiungere che tutte le bozze sono disponibili come repository git github.com/cplusplus/draft . Potresti eventualmente aggiungere il link a isocpp.org/std/the-standard
pepr

@ShafikYaghmour: sembra che lo abbiano bloccato (il che significa generalmente che è un rilascio ufficiale). Ho aggiornato con i collegamenti alla versione che richiede l'autenticazione (cioè hai pagato per questo).
Martin York,

64

C99 è disponibile online . Citato da www.open-std.org :

L'ultima versione disponibile pubblicamente dello standard è la combinazione C99 + TC1 + TC2 + TC3, WG14 N1256 , datata 2007-09-07. Questo è un documento di lavoro WG14, ma riflette lo standard consolidato al momento dell'emissione.


26

Bozze di collegamenti:

C ++ 11 (+ correzioni editoriali): N3337 HTML , PDF

C ++ 14 (+ correzioni editoriali): N4140 HTML , PDF

C11 N1570 ( testo )

C99 N1256

Le bozze della norma vengono diffuse per un commento prima della ratifica e della pubblicazione.

Si noti che una bozza di lavoro non è lo standard attualmente in vigore e non è esattamente lo standard pubblicato


Il collegamento "N1169" va a un documento di quattro pagine contenente alcuni rapporti sui difetti. Non è in alcun modo una bozza dello standard C ++ (o di qualsiasi altro).
Gareth McCaughan,

Mi piace questa risposta perché chiarisce qual è la bozza più recente per ogni versione principale.
Ciro Santilli 14 冠状 病 六四 事件 法轮功


12

Gli standard ISO costano denaro, da un importo moderato (per una versione PDF), a un po 'di più (per una versione del libro).

Sebbene non siano finalizzati, tuttavia, di solito possono essere trovati online, come bozze. Il più delle volte la versione finale non differisce in modo significativo dall'ultima bozza, quindi sebbene non sia perfetta, si adatteranno perfettamente.


7

Gli standard C99 e C ++ 03 sono disponibili in formato libro da Wiley:

Inoltre, come già accennato, il progetto di lavoro per gli standard futuri è spesso disponibile sui siti Web del comitato:

La bozza C-201x è disponibile come N1336 e la bozza C ++ 0x come N3225 .


1
Solo una nota sulla versione stampata per lo standard C di Wiley: è lo standard C99, non C89 / 90.
Michael Burr,

4

Gli standard ISO C e C ++ sono dannatamente costosi. D'altra parte, gli INCITS li ripubblicano per molto meno. http://www.techstreet.com/ sembra avere il PDF per $ 30 (ricerca di INCITS / ISO / IEC 14882: 2003).

Sono disponibili anche versioni cartacee. Cerca le versioni del British Standards Institute, pubblicate da Wiley.


Attualmente, techstreet.com ha lo standard C ++ 2003 in formato PDF per US $ 30 e lo standard C ++ 2011 per US $ 403.
Keith Thompson,

Grazie mille per il link a Techstreet. Il negozio online di ANSI.org non mi venderebbe lo standard C11 (rifiutando la carta di credito per motivi di "sicurezza", cioè senza una buona ragione), mentre l'acquisto a prezzo equivalente (con la stessa carta) su Techstreet è andato liscio e senza intoppo.
Arto Bendiken,

4

I documenti sugli standard effettivi potrebbero non essere i più utili. La maggior parte dei compilatori non implementa completamente gli standard e talvolta può effettivamente essere in conflitto. Quindi la documentazione del compilatore che avresti già sarà più utile. Inoltre, la documentazione conterrà osservazioni e note specifiche della piattaforma su eventuali avvertenze.


24
La documentazione del compilatore è importante, ma conoscere la lingua piuttosto che conoscere l'implementazione è molto di più.
Spidey,

2
Con lo standard attuale puoi trovare bug nei compilatori e aiutarli a seguire meglio lo standard correggendoli, inviando segnalazioni di bug o semplicemente entrando in una stanza IRC e parlando con qualcuno che può risolverlo.
hdante

3
@hdante - assolutamente. Quando lo standard è l'ideale, è possibile richiedere la compatibilità dal fornitore. @ / all - L'intenzione qui non era quella di dire che lo standard non è utile (FYI, andare dallo standard prima è l'approccio che ho adottato in passato), ma che devi conoscere anche il tuo punto di partenza nel mondo reale, che si spera sia in linea con gli standard.
Kris Kumler

6
La documentazione del compilatore tende comunque a tralasciare le cose coperte dagli standard.
SamB

4

Il testo di una bozza dello standard ANSI C (aka C.89) è disponibile online. Questo è stato standardizzato dal comitato ANSI prima dell'accettazione da parte dello standard ISO C (C.90), quindi la numerazione delle sezioni differisce (le sezioni ANSI da 2 a 4 corrispondono approssimativamente alle sezioni ISO da 5 a 7), anche se il contenuto è (supposto essere) in gran parte identico.


È davvero l'ultima bozza? Una differenza di cui sono a conoscenza è che questa bozza specifica l'intervallo di tm_sec da utilizzare [0, 60], mentre C90 (erroneamente)[0, 61]
Cubbi

@Cubbi, dal momento che non posso dimostrarlo personalmente, ho modificato il testo. Grazie.
jxh

@Cubbi: ha detto che era l'ultima bozza dello standard ANSI . Sembra che qualcuno nel WG ISO si sia confuso e abbia pensato che i possibili due secondi bisestili in un anno potrebbero accadere anche dopo lo stesso minuto ... O hanno ricevuto l'errore da POSIX, che non dice dove l'hanno trovato da, solo che lo hanno riparato per allinearsi con C99.
SamB,

K&R 2nd Ed. (ANSI C), che non si basa sull'effettivo standard finale, specifica che lo tm_secè (0, 61). Ho pensato che fosse per i secondi bisestili, ha senso.
veganaiZe

@veganaiZe L'intervallo è [0, 60] per consentire i secondi da saltare (altrimenti sarebbe [0, 59]). [0, 61] è stato un errore, il che implica che sarebbe possibile avere due secondi bisestili nello stesso minuto (non lo è).
Keith Thompson,

2

Sebbene non sia uno standard effettivo, esiste un emendamento a ISO C (C89 / 90) chiamato C94 / 95 o Addendum normativo 1. È stato integrato in C99, sebbene alcuni compilatori come Clang ti consentano di specificare -std=c94sulla riga di comando. ISO / IEC 9899: 1990 / Amd 1: 1995 possono essere acquistati a un prezzo elevato da SAI GLOBAL (PDF o copia cartacea).

Un riepilogo del documento è disponibile qui .

Quando la (allora bozza) norma ANSI C era stata presa in considerazione per l'adozione di una norma internazionale nel 1990, c'erano diverse obiezioni perché non affrontava i problemi di internazionalizzazione. Poiché lo standard era già in atto da diversi anni, si è convenuto che sarebbero state apportate alcune modifiche per fornire la base (ad esempio, sono state aggiunte le funzioni del sotto-paragrafo 7.10.7) e il lavoro sarebbe stato svolto separatamente per fornire corretta internazionalizzazione dello standard. Questo lavoro è culminato nell'addendum normativo 1.

L'addendum normativo 1 incarna la reazione di C alle limitazioni e alle promesse dei set di caratteri internazionali. Digraphs e l'intestazione avevano lo scopo di migliorare l'aspetto dei programmi C scritti in varianti nazionali di ISO 646 senza, ad esempio, {o} caratteri. All'altra estremità dello spettro, le strutture si collegavano ed estendevano la base appena adeguata del vecchio standard in un insieme completo e coerente di utility per la gestione di caratteri ampi e stringhe multibyte.

Questo documento riassume l'addendum normativo 1. Ha lo scopo di informare rapidamente i lettori che hanno già familiarità con lo standard; non introduce e non può presentare l'argomento complesso alla base di NA1, né può sostituire il documento originale come manuale di riferimento. (Tuttavia, cerca di essere il più preciso possibile e il suo autore vorrebbe sapere di eventuali errori o omissioni.)


-6

http://c0x.coding-guidelines.com/ contiene una versione ricercabile, basata su HTML, dello standard C. In realtà, una versione leggermente modificata:

Questo sito Web contiene una versione modificata di N1256. Include la formulazione che è stata eliminata da C99 (ovvero, in forma barrata) e una formulazione che appare in C99 (ovvero, in forma sottolineata).


2
Il sito Web è inutile poiché la maggior parte delle pagine sono vuote.
Nisse Engström,

Questo sito Web è davvero una vera merda.
MD XF,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.