Geçerli C veya C ++ standart belgelerini nerede bulabilirim?


394

Birçok soru için cevap "standart" içinde görünüyor. Ancak bunu nerede buluyoruz? Tercihen çevrimiçi.

Google, programlama forumları hakkındaki tartışmalar sonucunda boğulduklarından, bazen özellikle C standartları için bazen nafile olabilirler.

Bunu başlatmak için, şu anda aradığım olanlar olduğundan, aşağıdakiler için iyi çevrimiçi kaynaklar var:

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

4
MSO hakkındaki tartışmaya dikkat edin . Bu sorunun cevapları C ve C ++ programcıları için değerlidir; açık bırakılmalıdır (en azından değil, cevaplara eklenecek bir C ++ 2014 standardı olduğu için, yayınlandıktan sonra - zaten onaylanmıştır).
Jonathan Leffler

Yanıtlar:


439

Standardın PDF versiyonları

1 Eylül 2014 itibariyle, PDF'deki C ve C ++ standart belgeleri için fiyatlarına göre en iyi yerler:

Bir standardın (herhangi bir standardın) eski revizyonlarını, standardın yeni bir sürümünün yayınlanmasından kısa bir süre sonra doğrudan standart kuruluşlarından doğrudan alamazsınız. Bu nedenle, C89, C90, C99, C ++ 98, C ++ 03 standartlarının standart bir kuruluştan satın alınması zor olacaktır. Bir standardın eski bir revizyonuna ihtiyacınız varsa, Techstreet'i olası bir kaynak olarak kontrol edin . Örneğin, yine de bir ücret karşılığında PDF Kanada versiyonunu CAN / CSA-ISO / IEC 9899: 1990 standardı sağlayabilir.

Standardın PDF dışı elektronik versiyonları

Standardın baskı versiyonları

Standartların basılı kopyaları ulusal standart kuruluşlarından ve ISO'dan alınabilir, ancak çok pahalıdır.

Yukarıdaki göre çok daha az parayla C90 standardının bir basılı istiyorsanız, ucuz bir el kopyasını bulmak mümkün olabilir Herb Schildt kitabı Açıklamalı ANSI Standardı at Amazon (yararlı) standardının asıl metni içerir, ve standart hakkındaki yorumlar (daha az yararlı - birkaç tehlikeli ve yanıltıcı hata içerir).

C99 ve C ++ 03 standartları, Wiley ve BSI (İngiliz Standartlar Enstitüsü) kitap formunda mevcuttur:

Standartlar komitesi taslak sürümleri (ücretsiz)

Gelecekteki standartlar için çalışma taslaklarına genellikle komite web sitelerinden erişilebilir:

Mevcut veya önceki C / C ++ standartlarından taslaklar almak istiyorsanız, internette ücretsiz olarak kullanılabilir:

C için:

C ++ için:

Bu belgelerin standartla aynı olmadığını unutmayın, ancak bir standarda karar veren toplantılardan hemen önceki sürümler genellikle nihai standartta olanlara çok yakındır. FCD (Nihai Komite Taslağı) versiyonları şifre korumalıdır; bunları alabilmek için standartlar komitesinde olmanız gerekir.

Taslak sürümler standartların son onaylanmış sürümlerine çok yakın olsa da, bu yazının editörlerinden bazıları gerçek belgelerin bir kopyasını almanızı şiddetle tavsiye eder - özellikle bunları referans olarak alıntılamayı planlıyorsanız. Tabii ki, açlıktan ölen öğrenciler nakit paraya bağlıysa taslakları kullanmalıdır.


Bir standardın onaylanmasından sonra birkaç ay beklemek istiyorsanız ve bir standardı ararken "ISO / IEC" yerine "INCITS / ISO / IEC" yi aramak anahtardır. Böylece, bu yazının editörlerinden biri C11 ve C ++ 11 standartlarını makul fiyatlarla bulabildi. Yerine "ISO / IEC 9899: 2011": Eğer "2011 INCITS / ISO / IEC 9899" için arama Örneğin, üzerinde webstore.ansi.org makul fiyatlı PDF versiyonunu bulacaksınız.


Https://wg21.link/ sitesi , C ++ mevcut çalışma taslak ve taslak standartlarına ve komite belgelerine kısa URL bağlantıları sağlar:


Standardın mevcut taslağı Github'da LaTeX kaynakları olarak korunur . Bu kaynaklar cxxdraft-htmlgen kullanılarak HTML'ye dönüştürülebilir . Aşağıdaki siteler bu şekilde oluşturulan HTML sayfalarını korur:

Tim Song ayrıca Networking TS ve Ranges TS'nin oluşturulan HTML ve PDF sürümlerini de muhafaza etmektedir.


60
Schildt'in kitabıyla ilgili sorun, yorumlarının yorum yaptığı standardı ciddi şekilde değersizleştirmesidir.
sbi

57
Çok kötü kitap önerisi (Herb Schildt's), Şuna
Wiz

11
İnceleme farkındayım - sadece standart çok ucuza almak için olası bir yol olarak kitap söz. Ancak insanların inceleme hakkında da bilgi sahibi olması gerektiğini düşünüyorum. Eğer ucuz standart basılı kopya (isterseniz ne olduğunu) istiyorsanız sadece kitabın ek açıklama bölümünü göz ardı öneririz.
Michael Burr

37
Schildt'in kitabı (baskısı bittiğini düşünüyorum) gerçek standardın basılı bir kopyasından çok daha ucuzdu. Fiyat farkının ek açıklamaların değerini yansıttığı öne sürülmüştür. Kitabın her kopyasına Clive DW Feather'ın Açıklamalı Açıklamalı C Standardı çıktısı eşlik etmelidir . (Schildt'in kitabında bazı tanıtım materyallerinin eksik olduğuna dikkat edin.)
Keith Thompson

12
@MichaelBurr, kabul ettiğiniz cevaba sahip olduğunuzdan tüm standardın www.open-std.org adresinde ücretsiz olarak bulunabileceğini, ücretsiz olanlara olan bağlantıların değiştirilmesine ne dersiniz?
Shahbaz

429

Standardın çevrimiçi sürümleri bulunabilir:

Çalışma Taslağı, Programlama Dili Standardı C ++

Standardın tüm taslak sürümleri :
Aşağıdakilerin tümü serbestçe indirilebilir
(bunların çoğu bu ana GitHub bağlantısında bulunabilir )
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

Bu yeni standart gibi görünüyor:
Bu sürüm Kimlik Doğrulaması gerektirir
2017-03-21: N4660 , C ++ 17 Taslak Standardıdır

Standardın tüm taslak sürümleri :
Aşağıdakilerin tümü serbestçe indirilebilir
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

Bu eski C ++ 14 standardı gibi görünüyor :
Bu sürüm Kimlik Doğrulama gerektirir
2014-10-07: N4140 git Temelde küçük hatalar ve yazım hataları düzeltilmişC ++ 14
2014-09-02: N4141 git Standart C ++ 14
2014- 03-02 : N3937
2014-03-02: N3936 git

Standardın tüm taslak sürümleri :
Aşağıdakilerin tümü serbestçe indirilebilir
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 Temelde küçük hatalar ve yazım hataları düzeltilmiş C ++ 11

Bu eski C ++ 11 standardı gibi görünüyor :
Bu sürüm Kimlik Doğrulaması gerektirir
2011-04-05: N3291 C ++ 11 (Veya Çok Yakın)

Standardın tüm taslak sürümleri :
Aşağıdakilerin tümü serbestçe indirilebilir
2011-02-28: N3242 (N3291'den çok küçük farklar)
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

Bu eski C ++ 03 standardı gibi görünüyor:
Aşağıdaki tüm sürümler Kimlik Doğrulama gerektirir
2004-11-05: N1733
2004-07-16: N1655 Resmi Olmayan
2004-02-07: N1577 C ++ 03 (Veya Çok Yakın)
2001 -09-13: N1316 Taslak Genişletilmiş Teknik Düzeltme
1997-00-00: N1117 Taslak Genişletilmiş Teknik Düzeltme

Standardın tüm taslak sürümleri :
Aşağıdakilerin tümü serbestçe indirilebilir
1996-00-00: N0836 Taslak Genişletilmiş Teknik Düzeltme
1995-00-00: N0785 Taslak Önerilen Uluslararası Bilgi Sistemleri Standardı - Programlama Dili C ++

Diğer İlginç Makaleler:

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


1
Bağlantıların sizi hangi standartlara götürdüğünü belirtmek isteyebilirsiniz! Ayrıca C11 standardını da ekliyoruz: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz

@Shahbaz: C standardının tüm kopyalarına aşina değilim (çünkü C kodu yazmıyorum (sadece C ++)). Kendi cevabınızı başlatmak veya aşağıdaki C dili ile açıkça ilgili olan cevaplardan birini düzenlemek isteyebilirsiniz (Bunun altındaki soruya bakınız).
Martin York

17
ISO çalışma grubundan bile daha güncel bir listeyi saklamak için +1, 21 .
Lundin

5
Liste için +1; yalnızca tüm taslakların git deposu github.com/cplusplus/draft olarak kullanılabilir olduğunu eklemek için . Bağlantıyı muhtemelen isocpp.org/std/the-standard
pepr

@ShafikYaghmour: Onu kilitledikleri anlaşılıyor (bu genellikle resmi bir sürüm anlamına gelir). Kimlik doğrulaması gerektiren sürüme bağlantılar ile güncelledim (bunun için ödeme yaptınız).
Martin York


26

Taslak Bağlantılar:

C ++ 11 (+ yazım düzeltmeleri): N3337 HTML , PDF

C ++ 14 (+ yazım düzeltmeleri): N4140 HTML , PDF

C11 N1570 ( metin )

C99 N1256

Standardın taslakları , onaylama ve yayınlanmadan önce yorumlanmak üzere dağıtılır.

Not çalışan bir taslak yürürlükte anda standart değildir ve tam olarak yayınlanan standart olmadığını


"N1169" bağlantısı birkaç hata raporu içeren dört sayfalık bir belgeye gider. Hiçbir şekilde C ++ (veya başka bir) standardın taslağı değildir.
Gareth McCaughan

Bu yanıtı beğendim, çünkü her bir büyük sürüm için en yeni taslağın ne olduğunu açıkça ortaya koyuyor.
Ciro Santilli 法轮功 13 病 六四 事件 法轮功


12

ISO standartları, makul bir miktardan (PDF sürümü için), biraz daha fazlasına (kitap sürümü için) mal olur.

Ancak kesinleşmemiş olsalar da, genellikle çevrimiçi olarak taslak olarak bulunabilirler. Çoğu zaman son sürüm son taslaktan önemli ölçüde farklı değildir, bu yüzden mükemmel olmasa da, sadece iyi uyacaklardır.


7

C99 ve C ++ 03 standartları Wiley'in kitap formunda mevcuttur:

Ayrıca, daha önce de belirtildiği gibi, gelecekteki standartlar için çalışma taslağı genellikle komite web sitelerinden edinilebilir:

C-201x taslağı N1336 ve C ++ 0x taslağı N3225 olarak mevcuttur .


1
Wiley'den C Standardının baskı versiyonu hakkında bir not: C89 / 90 değil, C99 standardı.
Michael Burr

4

ISO C ve C ++ standartları kanlıdır. Öte yandan, INCITS onları çok daha az yeniden yayınlar. http://www.techstreet.com/ 30 $ için PDF'ye sahip gibi görünüyor (INCITS / ISO / IEC 14882: 2003'ü arayın).

Basılı versiyonlar da mevcuttur. Wiley tarafından yayınlanan British Standards Institute sürümlerine bakın.


Şu anda techstreet.com, PDF biçiminde 30 ABD doları için C ++ 2003 standardına ve 403 ABD doları için C ++ 2011 standardına sahiptir.
Keith Thompson

Techstreet'e bağlantı için çok teşekkürler. ANSI.org'un web mağazası bana C11 standardını satmayacaktı (kredi kartını "güvenlik" nedenleriyle reddediyordu, yani iyi bir sebep yok), Techstreet'te eşdeğer fiyatlı satın alma (aynı kartla) sorunsuz ve sorunsuz bir şekilde gitti aksaklık.
Arto Bendiken

4

Gerçek standart belgeleri en kullanışlı olmayabilir. Çoğu derleyici standartları tam olarak uygulamamaktadır ve bazen gerçekte çatışabilir. Bu yüzden zaten sahip olacağınız derleyici belgeleri daha yararlı olacaktır. Ayrıca, belgeler platforma özgü uyarılar ve uyarılarla ilgili notlar içerecektir.


24
Derleyici belgeleri önemlidir, ancak uygulamanızı bilmek yerine dili bilmek çok daha fazladır.
Spidey

2
Gerçek standartla, derleyicilerdeki hataları bulabilir ve yama yayarak, hata raporları göndererek veya sadece bir IRC odasına girerek ve düzeltebilecek biriyle konuşarak standardı daha iyi takip etmelerine yardımcı olabilirsiniz.
Mart'ta hdante

3
@hdante - kesinlikle. Standardın kendisi idealdirse, satıcıdan uyumluluk talep edebilirsiniz. @ / all - Buradaki amaç, standardın yararlı olmadığını (FYI, standarttan ilk önce geçmişte aldığım yaklaşım) söylemek değil, gerçek dünyadaki başlangıç ​​noktanızı da bilmeniz gerektiğini, umarım standartlarla uyumludur.
Kris Kumler

6
Derleyici belgeleri, yine de standartlarda kapsanan şeyleri dışarıda bırakma eğilimindedir.
SamB

4

ANSI C standardının taslak metni (C.89 olarak da bilinir) çevrimiçi olarak mevcuttur. Bu, ISO C Standardı (C.90) tarafından kabul edilmeden önce ANSI komitesi tarafından standartlaştırılmıştır, bu nedenle bölümlerin numaralandırması farklıdır (ANSI bölüm 2 ila 4, ISO bölümleri 5 ila 7'ye kabaca karşılık gelir), ancak içerik (varsayalım) büyük ölçüde özdeş olmak.


Gerçekten son taslak mı? Fark ettiğim bir fark, bu taslağın [0, 60][0, 61]
tm_sec

@ Kübi, şahsen olduğunu kanıtlayamadığım için, ifadeyi değiştirdim. Teşekkürler.
jxh

@Cubbi: ANSI standardının son taslağı olduğunu söyledi . ISO WG'deki birisinin kafası karışmış gibi görünüyor ve bir yılda olası iki sıçrama saniyesinin de aynı dakika içinde / sonrasında olabileceğini düşündü ... Veya POSIX'ten hatayı aldılar, nerede aldıklarını söylemiyorlar yalnızca C99 ile hizalamak için sabitlediklerinden.
SamB

K&R 2. Baskı. Olduğu (ANSI C) değil gerçek nihai standardına dayalı, yani belirtirse tm_secolduğunu (0, 61). Bunun saniyeler için olduğunu düşündüm.
veganaiZe

@veganaiZe Artık saniye için izin vermek için aralık [0, 60] 'dır (aksi takdirde [0, 59] olacaktır). [0, 61] bir hataydı, bu da aynı dakikada iki artık saniyenin mümkün olabileceğini ima ediyordu (değil).
Keith Thompson

2

Gerçek bir standart olmamasına rağmen, C94 / 95 veya Normatif Eki 1 olarak adlandırılan ISO C'de (C89 / 90) bir değişiklik var. Clang gibi bazı derleyiciler -std=c94komut satırında belirtmenize izin verse de C99'a entegre edildi . ISO / IEC 9899: 1990 / Amd 1: 1995 ağır bir fiyata SAI GLOBAL'den satın alınabilir (PDF veya basılı kopya).

Belgenin bir özeti burada bulunabilir .

1990'da (sonra taslak) ANSI C Standardı Uluslararası bir Standardın kabulü için düşünülürken, uluslararasılaşma konularını ele almadığı için birkaç itiraz vardı. Standart yapımda zaten birkaç yıl olduğu için, temeli sağlamak için birkaç değişiklik yapılması (örneğin, 7.10.7 nolu fıkradaki fonksiyonlar eklenmiştir) ve sağlamak için çalışmaların ayrı ayrı yapılması kararlaştırılmıştır. Standardın uygun uluslararasılaştırılması. Bu çalışma Normatif Zeyilname 1'de sona ermiştir.

Normatif Zeyilname 1, C'nin uluslararası karakter setlerinin hem sınırlamalarına hem de vaatlerine verdiği tepkiyi somutlaştırmaktadır. Digraflar ve başlık, örneğin {veya} karakteri olmadan ISO 646'nın ulusal varyantlarında yazılan C programlarının görünümünü iyileştirmeyi amaçladı. Spektrumun diğer ucunda, eski Standardın zar zor yeterli temeline bağlanan ve geniş çaplı karakterleri ve çokbaytlı dizeleri işlemek için eksiksiz ve tutarlı bir yardımcı program kümesine genişletilen tesisler.

Bu belgede Normatif Zeyilname 1 özetlenmektedir. Standardı bilen okuyucuları hızlı bir şekilde bilgilendirmek amacıyla hazırlanmıştır; NA1'in arkasındaki karmaşık konuyu tanımaz ve sunamaz ve orijinal belgeyi referans el kitabı olarak değiştiremez. (Bununla birlikte, mümkün olduğunca doğru olmaya çalışır ve yazarı herhangi bir hata veya eksiklik hakkında bilgi almak ister.)


-6

http://c0x.coding-guidelines.com/ , C standardının aranabilir, HTML tabanlı bir sürümünü içerir. Aslında, biraz değiştirilmiş bir versiyon:

Bu web sitesi N1256'nın değiştirilmiş bir sürümünü içermektedir. C99'dan silinmiş ifadeleri (yani, formda çarpılmış olarak) ve C99'da (yani altı çizili formda) kullanılan ifadeleri içerir.


2
Sayfaların çoğu boş olduğu için web sitesi işe yaramaz.
Nisse Engström

Bu web sitesi gerçekten mutlak bok.
MD XF
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.