Di mana saya menemukan dokumen standar C atau C ++ saat ini?

394

Untuk banyak pertanyaan, jawabannya tampaknya ditemukan dalam "standar". Namun, di mana kita menemukannya? Lebih disukai online.

Googling kadang-kadang bisa terasa sia-sia, sekali lagi terutama untuk standar C, karena mereka tenggelam dalam banjir diskusi di forum pemrograman.

Untuk memulai ini, karena ini adalah yang saya cari saat ini, di mana ada sumber daya online yang bagus untuk:

  • C89
  • C99
  • C11
  • C ++ 98
  • C ++ 03
  • C ++ 11
  • C ++ 14
  • C ++ 17
Christoffer
sumber
4
Perhatikan diskusi tentang MSO . Jawaban atas pertanyaan ini sangat berharga bagi programmer C dan C ++; itu harus dibiarkan terbuka (paling tidak karena ada standar C ++ 2014 untuk menambah jawaban, setelah sudah dipublikasikan - sudah disetujui).
Jonathan Leffler

Jawaban:

439

Versi standar PDF

Pada 1 September 2014, lokasi terbaik berdasarkan harga untuk dokumen standar C dan C ++ dalam PDF adalah:

Anda biasanya tidak bisa mendapatkan revisi lama dari suatu standar (standar apa saja) langsung dari badan standar tidak lama setelah edisi standar yang baru dirilis. Dengan demikian, standar untuk C89, C90, C99, C ++ 98, C ++ 03 akan sulit ditemukan untuk pembelian dari badan standar. Jika Anda memerlukan revisi standar lama, periksa Techstreet sebagai salah satu sumber yang mungkin. Misalnya, masih dapat memberikan versi Kanada CAN / CSA-ISO / IEC 9899: 1990 dalam PDF, dengan biaya tambahan.

Versi elektronik non-PDF dari standar

Cetak versi standar

Salinan cetak standar tersedia dari badan standar nasional dan ISO tetapi sangat mahal.

Jika Anda ingin hardcopy dari standar C90 untuk banyak uang kurang dari di atas, Anda mungkin dapat menemukan salinan bekas murah dari Herb Schildt buku 's The Annotated ANSI Standard di Amazon , yang berisi teks yang sebenarnya dari standar (berguna) dan komentar tentang standar (kurang bermanfaat - berisi beberapa kesalahan berbahaya dan menyesatkan).

Standar C99 dan C ++ 03 tersedia dalam bentuk buku dari Wiley dan BSI (British Standards Institute):

Versi konsep komite standar (gratis)

Draf kerja untuk standar di masa mendatang sering tersedia dari situs web komite:

Jika Anda ingin mendapatkan konsep dari standar C / C ++ saat ini atau sebelumnya, ada beberapa yang tersedia secara gratis di internet:

Untuk C:

Untuk C ++:

Perhatikan bahwa dokumen-dokumen ini tidak sama dengan standar, meskipun versi sebelum pertemuan yang memutuskan standar biasanya sangat dekat dengan apa yang ada dalam standar akhir. Versi FCD (Final Committee Draft) dilindungi kata sandi; Anda harus berada di komite standar untuk mendapatkannya.

Meskipun versi konsep mungkin sangat dekat dengan versi standar akhir yang telah diratifikasi, beberapa editor posting ini akan sangat menyarankan Anda untuk mendapatkan salinan dokumen yang sebenarnya - terutama jika Anda berencana mengutipnya sebagai referensi. Tentu saja, siswa yang kelaparan harus melanjutkan dan menggunakan konsep jika kekurangan uang.


Tampaknya, jika Anda bersedia dan dapat menunggu beberapa bulan setelah ratifikasi suatu standar, untuk mencari "INCIT / ISO / IEC" daripada "ISO / IEC" ketika mencari standar adalah kuncinya. Dengan melakukan itu, salah satu editor posting ini dapat menemukan standar C11 dan C ++ 11 dengan harga yang wajar. Misalnya, jika Anda mencari "INCITS / ISO / IEC 9899: 2011" alih-alih "ISO / IEC 9899: 2011" di webstore.ansi.org Anda akan menemukan versi PDF dengan harga terjangkau.


Situs https://wg21.link/ menyediakan tautan URL pendek ke C ++ draft dan draft standar kerja saat ini, dan makalah komite:


Draf standar saat ini dipertahankan sebagai sumber LaTeX di Github . Sumber-sumber ini dapat dikonversi ke HTML menggunakan cxxdraft-htmlgen . Situs-situs berikut mempertahankan halaman HTML yang dihasilkan:

Lagu Tim juga mengelola versi HTML dan PDF yang dihasilkan dari Networking TS dan Ranges TS.

Michael Burr
sumber
60
Masalah dengan buku Schildt adalah bahwa komentarnya sangat merendahkan standar yang dia komentari.
sbi
57
Rekomendasi buku yang sangat buruk (Herb Schildt's), Lihat ini: lysator.liu.se/c/schildt.html
Wiz
11
Saya mengetahui ulasan - saya menyebutkan buku hanya sebagai cara yang mungkin untuk mendapatkan standar yang sangat murah. Tapi saya kira orang juga harus tahu tentang ulasan itu. Saya sarankan satu abaikan saja bagian anotasi buku jika Anda ingin hardcopy standar yang murah (itulah yang saya lakukan).
Michael Burr
37
Buku Schildt (yang saya pikir sudah tidak dicetak) jauh lebih murah daripada salinan cetak dari standar aktual. Disarankan bahwa perbedaan harga mencerminkan nilai anotasi. Setiap salinan buku harus disertai dengan cetakan Cive Annotated Annotated C Standard karya Clive DW Feather . (Perhatikan bahwa beberapa bahan pengantar hilang dari buku Schildt.)
Keith Thompson
12
@MichaelBurr, semua standar dapat ditemukan gratis di www.open-std.org karena Anda memiliki jawaban yang diterima, bagaimana dengan mengubah tautan ke yang gratis?
Shahbaz
429

Versi standar online dapat ditemukan:

Working Draft, Standar untuk Bahasa Pemrograman C ++

Berikut semua versi konsep standar :
Semua yang berikut ini dapat diunduh secara bebas
(banyak di antaranya dapat ditemukan di tautan GitHub utama ini)
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-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

Ini tampaknya menjadi standar baru:
Versi ini memerlukan Otentikasi
2017-03-21: N4660 adalah Standar Draf C ++ 17

Berikut semua versi konsep standar :
Semua yang berikut ini dapat diunduh secara gratis
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

Ini tampaknya menjadi standar C ++ 14 yang lama :
Versi ini membutuhkan Otentikasi
2014-10-07: N4140 git Pada dasarnya C ++ 14 dengan kesalahan kecil dan kesalahan ketik dikoreksi
2014-09-02: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git

Berikut semua versi konsep standar :
Semua yang berikut ini dapat diunduh secara bebas 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 Pada dasarnya C ++ 11 dengan kesalahan kecil dan kesalahan pengetikan

Ini tampaknya merupakan standar C ++ 11 yang lama :
Versi ini membutuhkan Otentikasi
2011-04-05: N3291 C ++ 11 (Atau Sangat Dekat)

Berikut semua versi konsep standar :
Semua yang berikut ini dapat diunduh secara gratis
2011-02-28: N3242 (perbedaan dari N3291 sangat kecil)
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

Ini tampaknya merupakan standar C ++ 03 yang lama:
Semua versi di bawah ini memerlukan Otentikasi
2004-11-05: N1733
2004-07-16: N1655 Tidak Resmi
2004-02-07: N1577 C ++ 03 (Atau Sangat Dekat)
2001 -09-13: N1316 Draft Diperluas Corrigendum Teknis
1997-00-00: N1117 Draft Diperluas Corrigendum Teknis

Berikut semua rancangan versi standar :
Semua yang berikut ini dapat diunduh secara bebas
1996-00-00: N0836 Draft Expanded Technical Corrigendum
1995-00-00: N0785 Working Paper untuk Draft Usulan Standar Internasional untuk Sistem Informasi - Bahasa Pemrograman C ++

Makalah Menarik Lainnya:

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

Martin York
sumber
1
Anda mungkin ingin menyebutkan standar apa yang membawa Anda ke tautan! Juga menambahkan standar C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz
@ Shahbaz: Saya tidak terbiasa dengan semua salinan standar C (karena saya tidak menulis kode C (hanya C ++)). Anda mungkin ingin memulai jawaban Anda sendiri atau mengedit salah satu jawaban di bawah yang berhubungan secara eksplisit dengan bahasa C (Lihat yang di bawah ini).
Martin York
17
+1 untuk menjaga daftar yang selalu lebih mutakhir daripada bahkan kelompok kerja ISO 21 .
Lundin
5
+1 untuk daftar; hanya untuk menambahkan bahwa semua konsep tersedia sebagai git repositori github.com/cplusplus/draft . Anda dapat menambahkan tautan ke isocpp.org/std/the-standard
pepr
@ShafikYaghmour: Sepertinya mereka telah menguncinya (yang biasanya berarti rilis resmi). Saya telah memperbarui dengan tautan ke versi yang memerlukan otentikasi (yaitu Anda membayar untuk itu).
Martin York
64

C99 tersedia online . Dikutip dari www.open-std.org :

Versi standar yang tersedia untuk umum adalah C99 + TC1 + TC2 + TC3, WG14 N1256 , tertanggal 2007-09-07. Ini adalah kertas kerja WG14, tetapi mencerminkan standar konsolidasi pada saat penerbitan.

Frederico
sumber
26

Tautan Draf:

C ++ 11 (+ perbaikan editorial): N3337 HTML , PDF

C ++ 14 (+ perbaikan editorial): N4140 HTML , PDF

C11 N1570 ( teks )

C99 N1256

Draf Standar diedarkan untuk komentar sebelum ratifikasi dan publikasi.

Perhatikan bahwa draft kerja bukanlah standar yang berlaku saat ini, dan itu bukan standar yang diterbitkan

pengguna1055604
sumber
Tautan "N1169" menuju ke dokumen empat halaman yang berisi beberapa laporan cacat. Ini sama sekali bukan konsep standar C ++ (atau lainnya).
Gareth McCaughan
Saya suka jawaban ini karena memperjelas apa draft terbaru untuk setiap rilis utama.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
12

Standar ISO membutuhkan biaya, dari jumlah moderat (untuk versi PDF), hingga sedikit lebih banyak (untuk versi buku).

Meskipun mereka belum selesai, mereka biasanya dapat ditemukan online, sebagai konsep. Seringkali versi final tidak berbeda secara signifikan dari draft terakhir, jadi meskipun tidak sempurna, mereka akan cocok dengan baik.

Pieter
sumber
4

Standar ISO C dan C ++ sangat mahal. Di sisi lain, INCIT menerbitkannya kembali dengan harga yang jauh lebih murah. http://www.techstreet.com/ tampaknya memiliki PDF sebesar $ 30 (mencari INCIT / ISO / IEC 14882: 2003).

Versi cetak juga tersedia. Cari versi British Standards Institute, yang diterbitkan oleh Wiley.

MSalters
sumber
Saat ini, techstreet.com memiliki standar C ++ 2003 dalam format PDF seharga US $ 30, dan standar C ++ 2011 seharga US $ 403.
Keith Thompson
Terima kasih banyak untuk tautannya ke Techstreet. Toko web ANSI.org tidak akan menjual kepada saya standar C11 (menolak kartu kredit karena alasan "keamanan", yaitu, tidak ada alasan bagus), sedangkan pembelian dengan harga yang setara (dengan kartu yang sama) di Techstreet berjalan dengan lancar dan tanpa halangan.
Arto Bendiken
4

Dokumen standar aktual mungkin bukan yang paling berguna. Sebagian besar penyusun tidak sepenuhnya menerapkan standar dan kadang-kadang mungkin benar-benar bertentangan. Jadi dokumentasi kompiler yang sudah Anda miliki akan lebih bermanfaat. Selain itu, dokumentasi akan berisi pernyataan dan catatan khusus platform pada setiap peringatan.

Kris Kumler
sumber
24
Dokumentasi kompiler penting, tetapi mengetahui bahasanya daripada mengetahui implementasi Anda jauh lebih baik.
Spidey
2
Dengan standar aktual Anda dapat menemukan bug dalam kompiler dan membantu mereka untuk mengikuti standar dengan lebih baik dengan menambalnya, dengan mengirimkan laporan bug atau hanya memasuki ruang IRC dan berbicara dengan seseorang yang dapat memperbaikinya.
hdante
3
@hdante - tentu saja. Ketika Anda memiliki standar itu sendiri sebagai yang ideal, Anda dapat menuntut kompatibilitas dari vendor. @ / semua - Maksud di sini bukan untuk mengatakan standar tidak berguna (FYI, pergi dari standar pertama adalah pendekatan yang telah saya ambil di masa lalu), tetapi Anda harus tahu titik awal dunia nyata Anda juga, yang diharapkan sesuai dengan standar.
Kris Kumler
6
Dokumentasi kompiler cenderung mengabaikan hal-hal yang tercakup dalam standar.
SamB
4

Teks konsep standar ANSI C (alias C.89) tersedia online. Ini distandarisasi oleh komite ANSI sebelum diterima oleh Standar ISO C (C.90), sehingga penomoran bagian berbeda (ANSI bagian 2 hingga 4 secara kasar sesuai dengan bagian ISO 5 hingga 7), meskipun kontennya (seharusnya menjadi) sebagian besar identik.

jxh
sumber
Apakah ini benar-benar draft terakhir? Satu perbedaan yang saya ketahui adalah bahwa konsep ini menentukan kisaran tm_sec [0, 60], sedangkan C90 (salah)[0, 61]
Cubbi
@ Cubbi, karena saya pribadi tidak bisa membuktikannya, saya memodifikasi kata-katanya. Terima kasih.
jxh
@Ubbi: dia mengatakan itu adalah draft terakhir dari standar ANSI . Kedengarannya seperti seseorang di ISO WG yang bingung dan berpikir bahwa kemungkinan dua lompatan detik dalam setahun dapat terjadi di / setelah menit yang sama juga ... Atau mereka mendapatkan kesalahan dari POSIX, yang tidak mengatakan dari mana mereka mendapatkannya. dari, hanya mereka memperbaikinya untuk menyelaraskan dengan C99.
SamB
K&R 2nd Ed. (ANSI C), yang tidak didasarkan pada standar akhir yang sebenarnya, apakah menentukan bahwa tm_secadalah (0, 61). Saya pikir itu untuk lompatan detik, masuk akal.
veganaiZe
@veganaiZe Kisarannya adalah [0, 60] untuk memungkinkan detik kabisat (jika tidak [0, 59]). [0, 61] adalah kesalahan, menyiratkan bahwa itu mungkin untuk memiliki dua detik kabisat pada menit yang sama (tidak).
Keith Thompson
2

Meskipun bukan standar aktual, ada amandemen ISO C (C89 / 90) yang disebut C94 / 95, atau Normative Addendum 1. Itu diintegrasikan ke dalam C99, meskipun beberapa kompiler seperti Dentang memungkinkan Anda untuk menentukan -std=c94pada baris perintah. ISO / IEC 9899: 1990 / Amd 1: 1995 dapat dibeli dengan harga yang lumayan dari SAI GLOBAL (PDF atau hard copy).

Ringkasan dokumen dapat ditemukan di sini .

Ketika (saat itu draft) Standar ANSI C dipertimbangkan untuk mengadopsi Standar Internasional pada tahun 1990, ada beberapa keberatan karena tidak membahas masalah internasionalisasi. Karena Standar sudah beberapa tahun dalam pembuatan, disepakati bahwa beberapa perubahan akan dibuat untuk memberikan dasar (misalnya, fungsi dalam subclause 7.10.7 ditambahkan), dan pekerjaan akan dilakukan secara terpisah untuk menyediakan internasionalisasi Standar yang tepat. Karya ini telah mencapai puncaknya pada Adendum Normatif 1.

Addendum 1 normatif mewujudkan reaksi C terhadap keterbatasan dan janji set karakter internasional. Digraphs dan header dimaksudkan untuk meningkatkan tampilan program C yang ditulis dalam varian nasional ISO 646 tanpa, misalnya karakter {atau}. Di ujung lain spektrum, fasilitas yang terhubung ke dan memperluas standar lama yang hampir tidak memadai menjadi seperangkat utilitas yang lengkap dan konsisten untuk menangani karakter lebar dan string multibyte.

Dokumen ini merangkum Adendum Normatif 1. Ini dimaksudkan untuk dengan cepat memberi tahu pembaca yang sudah terbiasa dengan Standar; itu tidak, dan tidak bisa, memperkenalkan pokok permasalahan yang rumit di belakang NA1, juga tidak dapat menggantikan dokumen asli sebagai manual referensi. (Namun demikian, ia berusaha seakurat mungkin, dan penulisnya ingin mendengar tentang kesalahan atau kelalaian.)

pengguna3920237
sumber
-6

http://c0x.coding-guidelines.com/ berisi versi standar C yang dapat ditelusuri berdasarkan HTML. Sebenarnya, versi yang sedikit dimodifikasi:

Situs web ini berisi versi modifikasi N1256. Ini termasuk kata-kata yang telah dihapus dari C99 (yaitu, dalam bentuk tembus) dan kata-kata yang dulu muncul di C99 (yaitu, dalam bentuk bergaris bawah).

Denilson Sa Maia
sumber
2
Situs web tidak berguna karena sebagian besar halaman kosong.
Nisse Engström
Situs web ini memang omong kosong.
MD XF