Where do I find the current C or C++ standard documents?
Asked Answered
F

11

394

For many questions the answer seems to be found in "the standard". However, where do we find that? Preferably online.

Googling can sometimes feel futile, again especially for the C standards, since they are drowned in the flood of discussions on programming forums.

To get this started, since these are the ones I am searching for right now, where are there good online resources for:

  • C89
  • C99
  • C11
  • C++98
  • C++03
  • C++11
  • C++14
  • C++17
Fission answered 17/9, 2008 at 10:4 Comment(1)
Note the discussion on MSO. The answers to this question are valuable to C and C++ programmers; it should be left open (not least because there's a C++2014 standard to add to the answers, once it has been published — it's already approved).Martinet
F
570

PDF versions of the standard

As of 1st September 2014 March 2022, the best locations by price for the official C and C++ standards documents in PDF seem to be:

Non-PDF electronic versions of the standard

Warning: most copies of standard drafts are published in PDF format, and errors may have been introduced if the text/HTML was transcribed or automatically generated from the PDF.

(The site hosting the plain text version of the C++11 working draft also has some C++14 drafts in this format. But none of them are copies of the final working draft, N4140.)

Print versions of the standard

Print copies of the standards are available from national standards bodies and ISO but are very expensive.

If you want a hardcopy of the C90 standard for much less money than above, you may be able to find a cheap used copy of Herb Schildt's book The Annotated ANSI Standard at Amazon, which contains the actual text of the standard (useful) and commentary on the standard (less useful - it contains several dangerous and misleading errors).

The C99 and C++03 standards are available in book form from Wiley and the BSI (British Standards Institute):

Standards committee draft versions (free)

The working drafts for future standards are often available from the committee websites:

If you want to get drafts from the current or earlier C/C++ standards, there are some available for free on the internet:

For C:

For C++:

Note that these documents are not the same as the standard, though the versions just prior to the meetings that decide on a standard are usually very close to what is in the final standard. The FCD (Final Committee Draft) versions are password protected; you need to be on the standards committee to get them.

Even though the draft versions might be very close to the final ratified versions of the standards, some of this post's editors would strongly advise you to get a copy of the actual documents — especially if you're planning on quoting them as references. Of course, starving students should go ahead and use the drafts if strapped for cash.


It appears that, if you are willing and able to wait a few months after ratification of a standard, to search for "INCITS/ISO/IEC" instead of "ISO/IEC" when looking for a standard is the key. By doing so, one of this post's editors was able to find the C11 and C++11 standards at reasonable prices. For example, if you search for "INCITS/ISO/IEC 9899:2011" instead of "ISO/IEC 9899:2011" on webstore.ansi.org you will find the reasonably priced PDF version.


The site https://wg21.link/ provides short-URL links to the C++ current working draft and draft standards, and committee papers:


The current draft of the standard is maintained as LaTeX sources on Github. These sources can be converted to HTML using cxxdraft-htmlgen. The following sites maintain HTML pages so generated:

Tim Song also maintains generated HTML and PDF versions of the Networking TS and Ranges TS.

POSIX extensions to the C standard

The POSIX standard (IEEE 1003.1) requires a compliant operating system to include a C compiler. This compiler must in turn be compliant with the C standard, and must also support various extensions defined in the "System Interfaces" section of POSIX (such as the off_t data type, the <aio.h> header, the clock_gettime() function and the _POSIX_C_SOURCE macro.)

So if you've tried to look up a particular function, been informed "This function is part of POSIX, not the C standard", and wondered why an operating system standard was mandating compiler features and language extensions... now you know!

  • There is a draft version of POSIX.1-2008 at http://www.open-std.org/jtc1/sc22/open/n4217.pdf.

    POSIX.1-2008 also had two technical corrigenda, the latter of the two being dated 2016. There is an online HTML version of the standard incorporating the corrigenda at https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/ - though, again, I have had situations where the site's own search box wasn't good for finding information.

  • There is an online HTML version of POSIX.1-2017 at https://pubs.opengroup.org/onlinepubs/9699919799/ - though, again, I recommend using Google instead of that site's searchbox. According to the Open Group website "IEEE 1003.1-2017 ... is a revision to the 1003.1-2008 standard to rollup the standard including its two technical corrigenda (as-is)". Linux manpages describe it as "technically identical" to POSIX.1-2008 with Technical Corrigenda 1 and 2 applied. This is therefore not a major revision and does not change the value of the _POSIX_C_SOURCE macro.

Footpoundal answered 17/9, 2008 at 10:4 Comment(44)
The problem with Schildt's book is that his comments severely devalue the standard he comments on.Caducity
Very bad book recommendation (Herb Schildt's), See this: lysator.liu.se/c/schildt.htmlHollowell
I'm aware of the review - I mention the book only as a possible way to get the standard very inexpensively. But I suppose that people should know about the review as well. I'd suggest one just ignore the annotation part of the book if you want the inexpensive standard hardcopy (that's what I do).Narrowminded
Schildt's book (which I think is out of print) was much cheaper than a printed copy of the actual standard. It's been suggested that the price difference reflects the value of the annotations. Every copy of the book should be accompanied by a printout of Clive D.W. Feather's The Annotated Annotated C Standard. (Note that some introductory material is missing from Schildt's book.)Protolithic
The C99 standard itself is not available online. I think ANSI charges $30 for it. But [n1256.pdf] (open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf), which is free, incorporates the C99 standard with the three Technical Corrigenda merged into it, marked with change bars. I find it more useful than the C99 standard itself.Protolithic
The c++11 standard is now available through ANSI: webstore.ansi.org/RecordDetail.aspx?sku=ISO%2fIEC+14882%3a2011 But it seems to be even pricier, at $403. I was really hoping it'd be 10% of that...Nidify
The $30 prices on previous PDF versions of the standards were after INCITS ratified the standard. I have no idea why INCITS versions of the standards are so much less expensive. I also have no idea how long that'll take for the 2011 C and C++ standards (if it ever does). Don't even really know what INCITS is.Narrowminded
The $30 INCITS version of the C++11 standard is now available.Narrowminded
@Alek: I was just pointing out that for people who wanted a zero cost option, the freely available drafts are pretty close to the released, official documents.Narrowminded
@MichaelBurr, all of the standard can be found free in www.open-std.org since you have the accepted answer, how about changing the links to the free ones?Oppugnant
@MichaelBurr, INCITS is the main US organisation that feeds into ISO, it's how ANSI advises ISO JTC1, the IT arm of ISO. We've recently had to deal with them re the SQL standards stuff we do at work. Once you start to play with these guys, you realise how much of a hydra this standardisation process is :-)Varia
@0xC0000022L and Michael Burr - It might be helpful to add an actual date next to the text As of today ....Petal
ISO 9899:1999 cannot be obtained free of charge. The TC3 was distributed free of charge but ISO/IEC 9899:1999:TC3 is not and has never been distributed free of charge. Note that TC1 to 9899:2011 is available free of charge here: webstore.iec.ch/corrigenda/iso/isoiec9899-cor1%7Bed1.0%7Den.pdfTrentontrepan
@ouah: this is from the WG14 page linked to for the C99 standard: "The lastest publically available version of the C99 standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256 [open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf], dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue"Narrowminded
stackoverflow.com/questions/3038976/c-reference-book?lq=1 has some useful links also.Georgiannegeorgic
The problem with Schlidt's book is once seen it cannot be unseen. It's one of the few books I tossed. Only take that option if you really are so poverty stricken you have no choice.Maleate
The linked website doesn't have anything resembling the latest working draft of the C++ standard... it still says n3797 is the "latest".Mayda
A $60 INCITS version of the C++14 standard is now available.Narrowminded
From the criticism of Schildt's book, "The assumption that 1 byte = 8 bits occurs at several other points in the book. I won't always bother to point it out." Is a byte not always 8 bits by definition? Are there any platforms where a "byte" refers to a different number of bits?Jerrelljerri
@AlexReinking: the C standard doesn't require that a byte is 8-bits (basically, a byte is intended to be the smallest addressable unit of memory on the platform, but it does have to be at least 8 bits). 8 bit bytes are pretty much the norm, but I've heard of DSPs that have 16-bit bytes. In college, I worked on a Univac oddball machine that has a 9-bit byte (codingforum.org/thread7407-6.html#post50838). Note that POSIX specifies that CHAR_BIT be 8: pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.htmlNarrowminded
@Michael Burr -- thanks for the info! Even the embedded systems I've worked with have had 8-bit bytes. I guess I always regarded them as fixed units like metric or something.Jerrelljerri
It may be worth noting this line from the 2018 C standard: “There are no major changes in this edition, only technical corrections and clarifications.”Cynar
The standards can also be bought from ISO's website for a little cheaper. For example, C17 is 40 dollars cheaper.Instrumental
The C89/C90, C99 and C11 standards are available here: stackoverflow.com/a/17015061Kayo
There is a C89 draft online at web.archive.org/web/20161223125339/http://flash-gordon.me.uk/…. Does anyone have any objection to my editing the above answer to add this link?Footpoundal
cppreference.com say that N4860 is the final working draft for C++20, and have posted a link to isocpp.org/files/papers/N4860.pdf. I haven't edited this into the above as I can't find any official announcement of this. But cppreference.com has a very good reputation and is probably correct.Footpoundal
Regarding the last edit - I cited Wikipedia talk page discussion as one of the reasons for changing "C18" to "C17/C18". This discussion is at en.wikipedia.org/wiki/Talk:C17_(C_standard_revision)#C17_vs_C18 and I may edit again to change "C17/C18" to "C17" at a later date.Footpoundal
Additionally, the manpage for gcc 10.2 gives the name as C17, and states that both -std=c17 and -std=c18 will result in C17 being used as the standard: 'ISO C17, the 2017 revision of the ISO C standard (published in 2018). This standard is same as C11 except for corrections of defects (all of which are also applied with -std=c11) and a new value of "STDC_VERSION", and so is supported to the same extent as C11.'Footpoundal
Where the official links are described as "the best locations by price" - I did find C++20 at the same ANSI webstore that was given as the best location for other standards (webstore.ansi.org/Standards/ISO/ISOIEC148822020). It was more expensive ($250) than the ISO store link, unless you were an ANSI member. I don't know how much ANSI membership costs, so left the iso.org link intact.Footpoundal
I occasionally run into situations where I try to look up a particular function in the standard and find that it's actually part of POSIX. I wonder if we ought to include POSIX standard versions in this wiki answer - anyone have any objections to my editing some in? Or do you think that goes off-topic?Footpoundal
For example, www.open-std.org/jtc1/sc22/open/n4217.pdf is almost certainly a draft of POSIX.1-2008, mirror.math.princeton.edu/pub/oldlinux/download/c952.pdf is POSIX.1-2001, there's an HTML version of POSIX.1-2017 hosted at pubs.opengroup.org/onlinepubs/9699919799 - and those are just the ones I know about.Footpoundal
Sorry, c952.pdf in the above comment is just part of POSIX.1-2001 - replace c952 with c950, c951 or c953 to access each of the other parts.Footpoundal
Also, I've added the POSIX standard versions to the answer, since nobody posted any objections to my suggestions in the earlier comment. It's not just based on trying to look up an odd function and finding that it's part of POSIX, there are also data-types and headers that are "part of POSIX", plus a requirement to have a C99-compliant command line compiler (which AFAICT was never updated for C11 or C17.)Footpoundal
Following on from the above, there's a "C POSIX library" Wikipedia page. I won't be editing it into the answer, but I'll provide a link here: en.wikipedia.org/wiki/C_POSIX_libraryFootpoundal
Regarding the C89 and C90 drafts linked to above - I've found a couple more textual differences, this time in their definitions of fflush(). In particular, C89's "in which the most recent operation was output" became "in which the most recent operation was not input" in C90 and all the subsequent versions.Footpoundal
For ex., this one: port70.net/~nsz/c/c11/n1570.html.Hooks
@Hooks However, without knowing how that HTML version came about, I'd advise a little wariness. Could someone have transcribed it manually and made some mistakes along the way? Could an automatic PDF->HTML convertor have altered the formatting, turning double quote marks into pairs of apostrophes, for example? There is already one link to an HTML version from that site, so I think I'll probably add the new link but also a cautionary note.Footpoundal
I'm seeing a lot of unsourced claims online that N1804 is the closest working draft to C++03. Does anyone have any evidence (e.g. Reddit posts by standards writers) to support/disprove this? Likewise, any information on the differences between N1804 and actual C++03 would be appreciated.Footpoundal
@Footpoundal Re: "altered the formatting": the similar situation.Hooks
@KeithThompson "Every copy of the book should be accompanied by a printout of Clive D.W. Feather's The Annotated Annotated C Standard". Well... meh. Having just read through this "annotated annotated", some 95% of it are petty, pedantic remarks that you'll no doubt find when reading any book looking for errors. There are just a few blatant major/conceptual errors like "When static is applied to a global variable or function, it causes that variable or function to have file scope". Overall it would rather seem that there are far worse, more erroneous C books such as K&R 2nd edition.Valerivaleria
(Like for example ranting about the book not describing the common initial sequence rule of unions. That rule remains unclear, DR:ed and poorly implemented by all compilers to this day, so I wouldn't blame any book for not mention that crap at all, in year 2023.)Valerivaleria
@Valerivaleria A book that purports to annotate the C standard should be pedantic. And if you think that K&R2 is worse than Schildt, I just don't know what to say.Protolithic
@KeithThompson I haven't read Schildt, but if this was the worst they could find, the book sounds mediocre, but not the complete disaster everyone yells about on SO. Unlike K&R which is a disaster, with exotic "obfuscated C code contest" examples on every page and reliance on poorly-defined behavior in pretty much every single code example. Anyway, this is probably getting a bit off topic.Valerivaleria
The link to the C++03 draft (cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/…) now denies access and asks for a username and password. I'll try to find an archived version or an alternative - EDIT: I found a Wayback Machine archived copy and will edit the link in despite the moderation strike as I think this community wiki is important enough to justify an exception.Footpoundal
I
466

Online versions of the standard can be found:

Working Draft, Standard for Programming Language C++

The following all draft versions of the standard:

All the following are freely downloadable
2023-12-18: N4971
2023-10-15: N4964
2023-08-14: N4958

This is the C++23 Standard:
2023-05-10: N4950

As a source for the above, see N4951, which states:
"N4950 is the current and final working draft for C++23. It replaces N4944, and it forms the basis of the Draft International Standard for C++23. ... The next working draft will be for C++26."

The following all draft versions of the standard:
All the following are freely downloadable
2023-03-22: N4944
2022-12-18: N4928
2022-09-05: N4917
2022-03-17: N4910
2021-10-22: N4901
2021-06-18: N4892
2021-03-17: N4885
2020-12-15: N4878
2020-10-18: N4868
2020-04-08: N4861

This is the C++20 Standard:
2020-04-08: N4860

Note regarding N4860 and N4861:
According to N4859:
"The contents of N4860 and N4861 are identical except for the cover sheet, page headers and footers, and except that N4861 does not contain an index of cross references from ISO C++ 2017."

The following all draft versions of the standard:
All the following are freely downloadable
(many of these can be found at this main GitHub link)
2020-01-14: N4849
2019-11-27: N4842
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

This is the old C++17 Standard:
This version requires authentication:
2017-03-21: N4660
This version does not require authentication:
2017-03-21: N4659 git

N4661 explicitly states that: "The contents of N4659 and N4660 are identical except for the cover sheet and page headings."

The following all draft versions of the standard:
All the following are freely downloadable

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

This is the old C++14 standard:
These version requires Authentication
2014-10-07: N4140 git Essentially C++14 with minor errors and typos corrected
2014-09-02: N4141 git Standard C++14
2014-03-02: N3937
2014-03-02: N3936 git

The following all draft versions of the standard:
All the following are freely downloadable
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 Essentially C++11 with minor errors and typos corrected

This is the old C++11 Standard:
This version requires Authentication
2011-04-05: N3291

The following all draft versions of the standard:
All the following are freely downloadable
2011-02-28: N3242 (differences from N3291 very minor)
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

This is the old C++03 Standard:
All the below versions require Authentication
2004-11-05: N1733
2004-07-16: N1655 Unofficial
2004-02-07: N1577 C++03 (Or Very Close)
2001-09-13: N1316 Draft Expanded Technical Corrigendum
1997-00-00: N1117 Draft Expanded Technical Corrigendum

The following all draft versions of the standard:
All the following are freely downloadable
1996-00-00: N0836 Draft Expanded Technical Corrigendum
1995-00-00: N0785 Working Paper for Draft Proposed International Standard for Information Systems - Programming Language C++

Other Interesting Papers:

2024 / 2023 / 2022 / 2021 / 2020 / 2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011

Interlocutrix answered 17/9, 2008 at 10:4 Comment(16)
You might want to mention what standard the links take you to! Also adding the C11 standard: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdfOppugnant
@Shahbaz: I am not familiar with all the copies of the C standard (as I don't write C code (only C++)). You may want to start your own answer or edit one of the answers below that deals explicitly with the C language (See the one below this).Interlocutrix
+1 for keeping a list that is constantly more up-to-date than even ISO working group 21.Valerivaleria
+1 for the list; only to add that all drafts are available as the git repository github.com/cplusplus/draft. You could possibly add the link to isocpp.org/std/the-standardButterflies
@ShafikYaghmour: Seems like they have locked it down (which generally means its an offical release). I have updated with links to the version that requires authentication (i.e you paid for it).Interlocutrix
@BЈовић: They voted on it yesterday so it is no longer a draft. As soon as they update the main ISO site I will update this page appropriately. N3797 is very close and free. N3936 is available on github follow that link.Interlocutrix
Looks like 4140 is the latest working draft available on github. I picked it up from the Pre-Urbana papers list.Resemble
Why are there two "This seems to be the new standard:" headers? One for C++11 and the other for C++14? It is confusing.Hypertrophy
@CiroSantilli六四事件法轮功纳米比亚胡海峰: There are actually three C++03 C++11 C++14. There is a new version in the works tentatively called C++17. Note: none of these breaks backwards compatibility with the previous version, but each iteration does add new features and libraries. You should learn C++14 it is the latest official version of the language.Interlocutrix
@LokiAstari thanks for the reply. I think I knew that already :-) But I think the format of this post is a bit confusing. Instead of "This seems to be the new standard" can we put headers saying: "C++11 and drafts", "C++14 and drafts", etc.Hypertrophy
@k-five: Sombody seems to have posted a version on github: github.com/cplusplus/draft/blob/master/papers/n4140.pdfInterlocutrix
These links: This seems to be the new standard: These version requires Authentication 2014-10-07: N4140 git Essentially C++14 with minor errors and typos corrected 2014-09-02: N4141 git Standard C++14 2014-03-02: N3937 2014-03-02: N3936 git are not longer accessible.Custodian
@LokiAstari Would it be beneficial to link to HTML versions of the working drafts, such as timsong-cpp.github.io/cppwp (not sure which draft, appears to be recent) or n3337?Sapowith
@JustinTime My /cppwp is trunk, just like eel.is/c++draft. /cppwp/n3337 and /cppwp/n4140 are essentially as advertised, with a few additional editorial changes that are needed to make the tool work. (The "draft LaTeX sources" link at the top of the TOC takes you to the exact commit from which the HTML was generated.)Cid
Probably should note that N4659 is the closest to the C++17 DIS and that link also includes the link to the C++17 DIS which probably should be added although it is not public.Resemble
I've tried to edit this to include a link to the newest C++23 working draft (N4885, dated March 17 2021) but I keep getting "Your post appears to contain code that is not properly formatted as code". Can someone else edit it in? I could not work out how to resolve this.Footpoundal
A
64

C99 is available online. Quoted from www.open-std.org:

The lastest publically available version of the standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256, dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue.

Assimilate answered 17/9, 2008 at 10:4 Comment(0)
S
26

Draft Links:

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

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

C11 N1570 (text)

C99 N1256

Drafts of the Standard are circulated for comment prior to ratification and publication.

Note that a working draft is not the standard currently in force, and it is not exactly the published standard

Silique answered 17/9, 2008 at 10:4 Comment(1)
The "N1169" link goes to a four-page document containing a few defect reports. It is not in any sense a draft of the C++ (or any other) standard.John
P
12

You might find the draft international standard for C++0x useful.

Pigeon answered 17/9, 2008 at 10:4 Comment(1)
The FCD is available now.Colum
H
11

ISO standards cost money, from a moderate amount (for a PDF version), to a bit more (for a book version).

While they aren't finalised however, they can usually be found online, as drafts. Most of the times the final version doesn't differ significantly from the last draft, so while not perfect, they'll suit just fine.

Histrionism answered 17/9, 2008 at 10:4 Comment(0)
C
7

The text of a draft of the ANSI C standard (aka C.89) is available online. This was standardized by the ANSI committee prior to acceptance by the ISO C Standard (C.90), so the numbering of the sections differ (ANSI sections 2 through 4 correspond roughly to ISO sections 5 through 7), although the content is (supposed to be) largely identical.

Cytosine answered 17/9, 2008 at 10:4 Comment(5)
Is it really the last draft? One difference I am aware of is that this draft specifies the range of tm_sec to be [0, 60], while C90 (incorrectly) [0, 61]Ceuta
@Cubbi: he did say it was the last draft of the ANSI standard. Sounds like someone in the ISO WG got confused and thought that the possible two leap seconds in a year might happen in/after the same minute, too... Or they got the error from POSIX, who don't say where they got it from, only that they fixed it to align with C99.Mercenary
K&R 2nd Ed. (ANSI C), which is not based on the actual final standard, does specify that tm_sec is (0, 61). I thought that was for leap seconds, makes sense.Cundiff
@Cundiff The range is [0, 60] to allow for leap seconds (otherwise it would be [0, 59]). [0, 61] was an error, implying that it would be possible to have two leap seconds in the same minute (it isn't).Protolithic
There's at least one notable difference between C89 and C90. In section 6.5.7 (previously 3.5.7), "a list" becomes "a brace-enclosed list" in C90.Footpoundal
P
6

The C99 and C++03 standards are available in book form from Wiley:

Plus, as already mentioned, the working draft for future standards is often available from the committee websites:

The C-201x draft is available as N1336, and the C++0x draft as N3225.

Previous answered 17/9, 2008 at 10:4 Comment(0)
T
3

The ISO C and C++ standards are bloody expensive. On the other hand, the INCITS republishes them for a lot less. http://www.techstreet.com/ seems to have the PDF for $30 (search for INCITS/ISO/IEC 14882:2003).

Hardcopy versions are available, too. Look for the British Standards Institute versions, published by Wiley.

Tenaculum answered 17/9, 2008 at 10:4 Comment(1)
Currently, techstreet.com has the C++2003 standard in PDF format for US$30, and the C++2011 standard for US$403.Protolithic
E
2

The actual standards documents may not be the most useful. Most compilers do not fully implement the standards and may sometimes actually conflict. So the compiler documentation that you would already have will be more useful. Additionally, the documentation will contain platform-specific remarks and notes on any caveats.

Escutcheon answered 17/9, 2008 at 10:4 Comment(4)
Compiler documentation is important, but knowing the language rather than knowing your implementation is much more.Poem
With the actual standard you can find bugs in the compilers and help them to better follow the standard by patching them, by submitting bug reports or simply entering an IRC room and talking to someone who can fix it.Mcphee
@Mcphee -- absolutely. When you have the standard itself as the ideal, you can demand compatibility from the vendor. @/all -- The intention here was not to say the standard is not useful (FYI, going from the standard first is the approach I have taken in the past), but that you have to know your real world starting point as well, which hopefully is in-line with the standards.Escutcheon
Compiler documentation tends to leave out the stuff covered in the standards, anyway.Mercenary
F
1

Although not an actual standard, there is an amendment to ISO C (C89/90) called C94/95, or Normative Addendum 1. It was integrated into C99, although some compilers such as Clang allow you to specifiy -std=c94 on the command line. ISO/IEC 9899:1990/Amd 1:1995 can be purchased for a hefty price from SAI GLOBAL (PDF or hard copy).

A summary of the document can be found here.

When the (then draft) ANSI C Standard was being considered for adoption of an International Standard in 1990, there were several objections because it didn't address internationalization issues. Because the Standard had already been several years in the making, it was agreed that a few changes would be made to provide the basis (for example, the functions in subclause 7.10.7 were added), and work would be carried out separately to provide proper internationalization of the Standard. This work has culminated in Normative Addendum 1.

Normative Addendum 1 embodies C's reaction to both the limitations and promises of international character sets. Digraphs and the header were meant to improve the appearance of C programs written in national variants of ISO 646 without, e.g., { or } characters. On the other end of the spectrum, the facilities connected to and extend the old Standard's barely adequate basis into a complete and consistent set of utilities for handling wide characters and multibyte strings.

This document summarizes Normative Addendum 1. It is intended to quickly inform readers who are already familiar with the Standard; it does not, and cannot, introduce the complex subject matter behind NA1, nor can it replace the original document as a reference manual. (Nevertheless, it tries to be as accurate as possible, and its author would like to hear about any errors or omissions.)

Foreworn answered 17/9, 2008 at 10:4 Comment(1)
The SAI Global link is no longer valid. I've checked archive.org and it did redirect at one time - based on that I THINK infostore.saiglobal.com/en-gb/standards/… is the new URL to purchase NA1.Footpoundal

© 2022 - 2024 — McMap. All rights reserved.