Tôi tìm tài liệu chuẩn C hoặc C ++ hiện tại ở đâu?


394

Đối với nhiều câu hỏi, câu trả lời dường như được tìm thấy trong "tiêu chuẩn". Tuy nhiên, chúng ta tìm thấy điều đó ở đâu? Tốt nhất là trực tuyến.

Googling đôi khi có thể cảm thấy vô ích, một lần nữa đặc biệt là đối với các tiêu chuẩn C, vì chúng bị nhấn chìm trong cơn lũ thảo luận trên các diễn đàn lập trình.

Để bắt đầu điều này, vì đây là những thứ tôi đang tìm kiếm ngay bây giờ, nơi có các tài nguyên trực tuyến tốt cho:

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

4
Lưu ý các cuộc thảo luận về MSO . Các câu trả lời cho câu hỏi này có giá trị đối với các lập trình viên C và C ++; nó nên được mở (ít nhất là vì có tiêu chuẩn C ++ 2014 để thêm vào câu trả lời, một khi nó đã được xuất bản - nó đã được phê duyệt).
Jonathan Leffler

Câu trả lời:


439

Phiên bản PDF của tiêu chuẩn

Kể từ ngày 1 tháng 9 năm 2014, các vị trí tốt nhất theo giá cho các tài liệu tiêu chuẩn C và C ++ trong PDF là:

Bạn thường không thể nhận được các bản sửa đổi cũ của một tiêu chuẩn (bất kỳ tiêu chuẩn nào) trực tiếp từ các cơ quan tiêu chuẩn ngay sau khi phiên bản mới của tiêu chuẩn được phát hành. Do đó, các tiêu chuẩn cho C89, C90, C99, C ++ 98, C ++ 03 sẽ khó tìm thấy để mua từ một cơ thể tiêu chuẩn. Nếu bạn cần sửa đổi cũ của một tiêu chuẩn, hãy kiểm tra Techstreet như một nguồn có thể. Ví dụ, nó vẫn có thể cung cấp phiên bản Canada CAN / CSA-ISO / IEC 9899: 1990 trong một khoản phí.

Phiên bản điện tử không phải PDF của tiêu chuẩn

Phiên bản in của tiêu chuẩn

Bản in của các tiêu chuẩn có sẵn từ các cơ quan tiêu chuẩn quốc gia và ISO nhưng rất đắt tiền.

Nếu bạn muốn bản cứng của tiêu chuẩn C90 với số tiền ít hơn nhiều so với ở trên, bạn có thể tìm thấy một bản sao được sử dụng giá rẻ của cuốn sách Herb Schildt của Annotated ANSI Standard tại Amazon , có chứa văn bản thực tế của tiêu chuẩn (hữu ích) và bình luận về tiêu chuẩn (ít hữu ích hơn - nó chứa một số lỗi nguy hiểm và gây hiểu lầm).

Các tiêu chuẩn C99 và C ++ 03 có sẵn ở dạng sách từ Wiley và BSI (Viện Tiêu chuẩn Anh):

Phiên bản dự thảo của ủy ban tiêu chuẩn (miễn phí)

Các bản nháp làm việc cho các tiêu chuẩn trong tương lai thường có sẵn từ các trang web của ủy ban:

Nếu bạn muốn nhận bản nháp từ các tiêu chuẩn C / C ++ hiện tại hoặc trước đó, có một số bản có sẵn miễn phí trên internet:

Đối với C:

Đối với C ++:

Lưu ý rằng các tài liệu này không giống với tiêu chuẩn, mặc dù các phiên bản ngay trước các cuộc họp quyết định về một tiêu chuẩn thường rất gần với những gì trong tiêu chuẩn cuối cùng. Các phiên bản FCD (Bản nháp cuối cùng) được bảo vệ bằng mật khẩu; bạn cần phải có mặt trong ủy ban tiêu chuẩn để có được chúng.

Mặc dù các phiên bản nháp có thể rất gần với các phiên bản được phê chuẩn cuối cùng của tiêu chuẩn, một số biên tập viên của bài đăng này sẽ khuyên bạn nên lấy một bản sao của các tài liệu thực tế - đặc biệt nếu bạn dự định trích dẫn chúng làm tài liệu tham khảo. Tất nhiên, học sinh đói nên đi trước và sử dụng các bản nháp nếu bị buộc tiền mặt.


Có vẻ như, nếu bạn sẵn sàng và có thể đợi vài tháng sau khi phê chuẩn tiêu chuẩn, để tìm kiếm "THU NHẬP / ISO / IEC" thay vì "ISO / IEC" khi tìm kiếm một tiêu chuẩn là chìa khóa. Bằng cách đó, một trong những biên tập viên của bài đăng này đã có thể tìm thấy các tiêu chuẩn C11 và C ++ 11 với giá cả hợp lý. Ví dụ: nếu bạn tìm kiếm "THU NHẬP / ISO / IEC 9899: 2011" thay vì "ISO / IEC 9899: 2011" trên webstore.ansi.org, bạn sẽ tìm thấy phiên bản PDF có giá hợp lý.


Trang web https://wg21.link/ cung cấp các liên kết URL ngắn đến dự thảo và tiêu chuẩn dự thảo hiện hành của C ++ và các giấy tờ của ủy ban:


Dự thảo hiện tại của tiêu chuẩn được duy trì dưới dạng nguồn LaTeX trên Github . Những nguồn này có thể được chuyển đổi sang HTML bằng cxxdraft-htmlgen . Các trang web sau duy trì các trang HTML được tạo như vậy:

Tim Song cũng duy trì các phiên bản HTML và PDF được tạo của Mạng TS và Phạm vi TS.


60
Vấn đề với cuốn sách của Schildt là những bình luận của anh ấy làm giảm giá trị tiêu chuẩn mà anh ấy nhận xét.
sbi

57
Đề xuất sách rất tệ (Herb Schildt's), Xem này: lysator.liu.se/c/schildt.html
Wiz

11
Tôi biết về đánh giá - Tôi chỉ đề cập đến cuốn sách như một cách có thể để có được tiêu chuẩn rất rẻ. Nhưng tôi cho rằng mọi người cũng nên biết về đánh giá này. Tôi khuyên bạn chỉ nên bỏ qua phần chú thích của cuốn sách nếu bạn muốn bản cứng tiêu chuẩn rẻ tiền (đó là những gì tôi làm).
Michael Burr

37
Cuốn sách của Schildt (mà tôi nghĩ là không còn xuất bản) rẻ hơn nhiều so với bản in của tiêu chuẩn thực tế. Có ý kiến ​​cho rằng chênh lệch giá phản ánh giá trị của các chú thích. Mỗi bản sao của cuốn sách phải được kèm theo bản in Tiêu chuẩn C được chú thích của Clive DW Feather . (Lưu ý rằng một số tài liệu giới thiệu bị thiếu trong cuốn sách của Schildt.)
Keith Thompson

12
@MichaelBurr, tất cả các tiêu chuẩn có thể được tìm thấy miễn phí trong www.open-std.org vì bạn có câu trả lời được chấp nhận, làm thế nào về việc thay đổi các liên kết đến các liên kết miễn phí?
Shahbaz

429

Phiên bản trực tuyến của tiêu chuẩn có thể được tìm thấy:

Bản thảo làm việc, Tiêu chuẩn cho ngôn ngữ lập trình C ++

Tất cả các phiên bản dự thảo sau đây của tiêu chuẩn :
Tất cả các phiên bản sau đây có thể tải xuống miễn phí
(có thể tìm thấy nhiều phiên bản tại liên kết GitHub chính này)
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

Đây dường như là tiêu chuẩn mới:
Các phiên bản này yêu cầu Xác thực
2017-03-21: N4660 là Tiêu chuẩn Dự thảo C ++ 17

Tất cả các phiên bản dự thảo sau đây của tiêu chuẩn :
Tất cả các phiên bản sau đây có thể tải xuống miễn phí
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

Đây có vẻ là tiêu chuẩn C ++ 14 cũ :
Các phiên bản này yêu cầu Xác thực
2014-10-07: N4140 git Về cơ bản C ++ 14 với các lỗi nhỏ và lỗi chính tả
2014-09 / 02: N4141 git Standard C ++ 14
2014- 03/02 : N3937
2014/03/02: N3936 git

Tất cả các phiên bản dự thảo sau đây của tiêu chuẩn :
Tất cả các phiên bản sau đây có thể tải xuống miễn phí
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 Về cơ bản C ++ 11 với các lỗi nhỏ và lỗi chính tả đã được sửa

Đây có vẻ là tiêu chuẩn C ++ 11 cũ :
Phiên bản này yêu cầu Xác thực
2011-04-05: N3291 C ++ 11 (Hoặc Rất gần)

Tất cả các phiên bản dự thảo sau đây của tiêu chuẩn :
Tất cả các phiên bản sau đây có thể tải xuống miễn phí 2011 / 02-28
: N3242 (khác biệt so với N3291 rất nhỏ)
2010-11-27: N3225
2010-08-21: N3126
2010-03-29: N3090 2010/02/2016
: 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

Đây dường như là tiêu chuẩn C ++ 03 cũ:
Tất cả các phiên bản dưới đây đều yêu cầu Xác thực
2004-11-05: N1733
2004-07-16: N1655 Không chính thức 2004/02/07
: N1577 C ++ 03 (Hoặc Rất Đóng)
2001 -09-13: Bản thảo kỹ thuật mở rộng N1316 Bản thảo kỹ thuật mở rộng
1997-00-00: Bản thảo bản thảo kỹ thuật mở rộng N1117

Tất cả các phiên bản dự thảo sau đây của tiêu chuẩn :
Tất cả các bản sau đây có thể tải xuống miễn phí
1996-00-00: N0836 Bản thảo kỹ thuật mở rộng Bản thảo kỹ thuật
1995-00-00: N0785 cho Dự thảo Tiêu chuẩn quốc tế đề xuất cho hệ thống thông tin - Ngôn ngữ lập trình C ++

Giấy tờ thú vị khác:

Năm 2020 / 2019 / năm 2018 / năm 2017 / năm 2016 / năm 2015 / năm 2014 / năm 2013 / 2012 / 2011


1
Bạn có thể muốn đề cập đến những gì các liên kết đưa bạn đến! Đồng thời thêm tiêu chuẩn C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz

@Shahbaz: Tôi không quen thuộc với tất cả các bản sao của tiêu chuẩn C (vì tôi không viết mã C (chỉ C ++)). Bạn có thể muốn bắt đầu câu trả lời của riêng mình hoặc chỉnh sửa một trong những câu trả lời dưới đây liên quan rõ ràng với ngôn ngữ C (Xem câu trả lời bên dưới này).
Martin York

17
+1 để giữ một danh sách liên tục cập nhật hơn cả nhóm làm việc ISO 21 .
Lundin

5
+1 cho danh sách; chỉ để thêm rằng tất cả các bản nháp đều có sẵn dưới dạng kho git github.com/cplusplus/draft . Bạn có thể có thể thêm liên kết đến isocpp.org/std/the-st Chuẩn
pepr

@ShafikYaghmour: Có vẻ như họ đã khóa nó (điều này thường có nghĩa là một bản phát hành chính thức). Tôi đã cập nhật với các liên kết đến phiên bản yêu cầu xác thực (tức là bạn đã trả tiền cho nó).
Martin York


26

Liên kết dự thảo:

C ++ 11 (+ sửa lỗi biên tập): N3337 HTML , PDF

C ++ 14 (+ sửa lỗi biên tập): N4140 HTML , PDF

C11 N1570 ( văn bản )

C99 N1256

Dự thảo của Tiêu chuẩn được lưu hành để bình luận trước khi phê chuẩn và xuất bản.

Lưu ý rằng một dự thảo đang hoạt động không phải là tiêu chuẩn hiện hành và nó không chính xác là tiêu chuẩn được công bố


Liên kết "N1169" đi đến một tài liệu bốn trang có chứa một vài báo cáo lỗi. Đây không phải là một bản nháp của tiêu chuẩn C ++ (hoặc bất kỳ loại nào khác).
Gareth McCaughan

Tôi thích câu trả lời này vì nó cho thấy rõ bản dự thảo gần đây nhất cho mỗi bản phát hành chính là gì.
Ciro Santilli 郝海东 冠状 病 事件 14/11/18


12

Các tiêu chuẩn ISO có giá tiền, từ một lượng vừa phải (đối với phiên bản PDF), đến hơn một chút (đối với phiên bản sách).

Mặc dù chúng chưa được hoàn thiện, tuy nhiên, chúng thường có thể được tìm thấy trực tuyến, dưới dạng bản nháp. Hầu hết các phiên bản cuối cùng không khác biệt đáng kể so với bản nháp cuối cùng, vì vậy trong khi không hoàn hảo, chúng sẽ rất phù hợp.


7

Các tiêu chuẩn C99 và C ++ 03 có sẵn ở dạng sách từ Wiley:

Ngoài ra, như đã đề cập, dự thảo làm việc cho các tiêu chuẩn trong tương lai thường có sẵn từ các trang web của ủy ban:

Bản nháp C-201x có sẵn dưới dạng N1336 và bản nháp C ++ 0x là N3225 .


1
Chỉ cần một lưu ý về phiên bản in cho Tiêu chuẩn C từ Wiley: đó là tiêu chuẩn C99, không phải C89 / 90.
Michael Burr

4

Các tiêu chuẩn ISO C và C ++ rất đắt đỏ. Mặt khác, INCITS tái xuất bản chúng với giá rẻ hơn rất nhiều. http://www.techstreet.com/ dường như có bản PDF với giá $ 30 (tìm kiếm THU NHẬP / ISO / IEC 14882: 2003).

Phiên bản Hardcopy cũng có sẵn. Hãy tìm các phiên bản của Viện Tiêu chuẩn Anh, được xuất bản bởi Wiley.


Hiện tại, techstreet.com có ​​tiêu chuẩn C ++ 2003 ở định dạng PDF với giá 30 đô la Mỹ và tiêu chuẩn C ++ 2011 cho 403 đô la Mỹ.
Keith Thompson

Cảm ơn rất nhiều vì liên kết đến Techstreet. Cửa hàng web của ANSI.org sẽ không bán cho tôi tiêu chuẩn C11 (từ chối thẻ tín dụng vì lý do "bảo mật", nghĩa là không có lý do chính đáng), trong khi việc mua hàng có giá tương đương (với cùng một thẻ) tại Techstreet diễn ra suôn sẻ và không có xô.
Arto Bendiken

4

Các tài liệu tiêu chuẩn thực tế có thể không hữu ích nhất. Hầu hết các trình biên dịch không thực hiện đầy đủ các tiêu chuẩn và đôi khi có thể thực sự xung đột. Vì vậy, tài liệu biên dịch mà bạn đã có sẽ hữu ích hơn. Ngoài ra, tài liệu này sẽ chứa các nhận xét và ghi chú dành riêng cho nền tảng trên mọi cảnh báo.


24
Tài liệu biên dịch là quan trọng, nhưng biết ngôn ngữ hơn là biết thực hiện của bạn là nhiều hơn nữa.
Spidey

2
Với tiêu chuẩn thực tế, bạn có thể tìm thấy các lỗi trong trình biên dịch và giúp chúng tuân theo tiêu chuẩn tốt hơn bằng cách vá chúng, bằng cách gửi báo cáo lỗi hoặc chỉ cần vào phòng IRC và nói chuyện với ai đó có thể sửa nó.
hdante

3
@hdante - Hoàn toàn. Khi bạn có tiêu chuẩn là lý tưởng, bạn có thể yêu cầu khả năng tương thích từ nhà cung cấp. @ / all - Ý định ở đây không phải là nói tiêu chuẩn này không hữu ích (FYI, đi từ tiêu chuẩn đầu tiên là cách tiếp cận tôi đã thực hiện trong quá khứ), nhưng bạn cũng phải biết điểm xuất phát trong thế giới thực của mình, mà hy vọng là phù hợp với các tiêu chuẩn.
Kris Kumler

6
Dù sao, tài liệu biên dịch có xu hướng bỏ đi những thứ được đề cập trong các tiêu chuẩn.
SamB

4

Văn bản của một bản nháp của tiêu chuẩn ANSI C (còn gọi là C.89) có sẵn trực tuyến. Điều này đã được ủy ban ANSI chuẩn hóa trước khi chấp nhận bởi Tiêu chuẩn ISO C (C.90), do đó việc đánh số các phần khác nhau (ANSI phần 2 đến 4 tương ứng với các phần từ 5 đến 7 của ISO), mặc dù nội dung là (được cho là được) phần lớn giống hệt nhau.


Có thực sự là bản thảo cuối cùng? Một điểm khác biệt tôi biết là dự thảo này chỉ định phạm vi của tm_sec [0, 60], trong khi C90 (không chính xác)[0, 61]
Cubbi

@Cubbi, vì cá nhân tôi không thể chứng minh rằng đó là, tôi đã sửa đổi từ ngữ. Cảm ơn.
jxh

@Cubbi: anh ấy đã nói rằng đó là bản thảo cuối cùng của tiêu chuẩn ANSI . Âm thanh như ai đó trong ISO WG bị nhầm lẫn và nghĩ rằng hai giây nhảy vọt trong một năm cũng có thể xảy ra trong / sau cùng một phút , ... Hoặc họ đã nhận được lỗi từ POSIX, người không nói họ đã nhận được nó ở đâu từ, chỉ có điều họ đã sửa nó để căn chỉnh với C99.
SamB

K & R lần 2 Ed. (ANSI C), không dựa trên tiêu chuẩn cuối cùng thực tế, không xác định đó tm_sec(0, 61). Tôi nghĩ rằng đó là cho bước nhảy vọt, có ý nghĩa.
veganaiZe

@veganaiZe Phạm vi là [0, 60] để cho phép nhảy giây (nếu không nó sẽ là [0, 59]). [0, 61] là một lỗi, ngụ ý rằng có thể có hai giây nhuận trong cùng một phút (không phải vậy).
Keith Thompson

2

Mặc dù không phải là một tiêu chuẩn thực tế, có một sửa đổi đối với ISO C (C89 / 90) được gọi là C94 / 95, hoặc Phụ lục tiêu chuẩn 1. Nó được tích hợp vào C99, mặc dù một số trình biên dịch như Clang cho phép bạn chỉ định -std=c94trên dòng lệnh. ISO / IEC 9899: 1990 / Amd 1: 1995 có thể được mua với giá rất đắt từ SAI GLOBAL (PDF hoặc bản sao cứng).

Một bản tóm tắt của tài liệu có thể được tìm thấy ở đây .

Khi (sau đó là dự thảo) Tiêu chuẩn ANSI C đang được xem xét để áp dụng Tiêu chuẩn quốc tế vào năm 1990, đã có một số ý kiến ​​phản đối vì nó không giải quyết được các vấn đề quốc tế hóa. Do Tiêu chuẩn đã được thực hiện vài năm, nên đã đồng ý rằng một vài thay đổi sẽ được thực hiện để cung cấp cơ sở (ví dụ: các chức năng trong mục 7.10.7 đã được thêm vào) và công việc sẽ được thực hiện riêng để cung cấp quốc tế hóa đúng tiêu chuẩn. Công việc này đã đạt đến đỉnh cao trong Phụ lục 1 tiêu chuẩn.

Phụ lục 1 tiêu chuẩn thể hiện phản ứng của C đối với cả những hạn chế và hứa hẹn của các bộ ký tự quốc tế. Các bản đồ và tiêu đề nhằm cải thiện sự xuất hiện của các chương trình C được viết bằng các biến thể quốc gia của ISO 646 mà không có, ví dụ: {hoặc} ký tự. Ở phía bên kia của quang phổ, các cơ sở được kết nối và mở rộng cơ sở gần như không đủ của Tiêu chuẩn cũ thành một bộ tiện ích đầy đủ và nhất quán để xử lý các ký tự rộng và chuỗi đa chuỗi.

Tài liệu này tóm tắt Phụ lục Tiêu chuẩn 1. Dự định nhanh chóng thông báo cho những độc giả đã quen thuộc với Tiêu chuẩn; nó không, và không thể, giới thiệu các vấn đề phức tạp đằng sau NA1, và cũng không thể thay thế tài liệu gốc làm tài liệu tham khảo. (Tuy nhiên, nó cố gắng chính xác nhất có thể và tác giả của nó muốn nghe về bất kỳ lỗi hoặc thiếu sót nào.)


-6

http://c0x.coding-guferences.com/ chứa phiên bản HTML dựa trên HTML có thể tìm kiếm được. Trên thực tế, một phiên bản sửa đổi một chút:

Trang web này chứa phiên bản sửa đổi của N1256. Nó bao gồm từ ngữ đã bị xóa khỏi C99 (nghĩa là ở dạng xuyên qua) và từ ngữ được sử dụng để xuất hiện trong C99 (nghĩa là ở dạng gạch chân).


2
Các trang web là vô dụng vì hầu hết các trang đều trống.
Nisse Engström

Trang web này thực sự là hoàn toàn tào lao.
MD XF
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.