473,396 Members | 1,724 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Which C Standard is currently definitive for C++?

I wanted to take a look at the actual C Programming Language specification
which provides the libraries used by C++ in the <c*> Headers. A couple
days ago, I found it freely available on the internet. I originally
assumed it was an older, or draft version. I'm pretty sure what I have is
the same ISO/IEC 9899:1999, Programming languages ? C referenced in the C++
Standard. I'm now discovering that it is available in many places on the
internet for free. Has it been superceded? Is the distribution of the
entire C Programming Language Standard being legally distrubuted without
cost? I was going to buy the latest version, but I'm not sure what that
is, nor am I sure which one officially applies to C++. To read the C++
Standard, and take it at face value (often a dangerous proposition) I would
say what I have is the normative version.

Can anybody tell me what C Standard document is the correct one to use as a
reference to the latest C++ Standard?
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #1
16 1520
Steven T. Hatton wrote:
I wanted to take a look at the actual C Programming Language specification
which provides the libraries used by C++ in the <c*> Headers. A couple
days ago, I found it freely available on the internet.
A violation of the copyright, no doubt.
I originally
assumed it was an older, or draft version. I'm pretty sure what I have is
the same ISO/IEC 9899:1999, Programming languages ? C referenced in the C++
Standard.
Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.
I'm now discovering that it is available in many places on the
internet for free.
"It" -- what?
Has it been superceded?
"It" -- what?
Is the distribution of the
entire C Programming Language Standard being legally distrubuted without
cost?
Not AFAIK.
I was going to buy the latest version, but I'm not sure what that
is, nor am I sure which one officially applies to C++.
Get a version of the C++ Standard and you'll know. They are listed in
section 1.2 Normative references.
To read the C++
Standard, and take it at face value (often a dangerous proposition) I would
say what I have is the normative version.
I don't understand this statement.
Can anybody tell me what C Standard document is the correct one to use as a
reference to the latest C++ Standard?


The C++ Standard should tell you that.

V
Jul 23 '05 #2
Victor Bazarov wrote:
Steven T. Hatton wrote:
I wanted to take a look at the actual C Programming Language
specification
which provides the libraries used by C++ in the <c*> Headers. A couple
days ago, I found it freely available on the internet.


A violation of the copyright, no doubt.


Well, I'm not going to snitch on anybody, but some of the places I saw it
would probably be careful about such things.
> I originally
assumed it was an older, or draft version. I'm pretty sure what I have
is the same ISO/IEC 9899:1999, Programming languages ? C referenced in
the C++ Standard.


Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.


The text appearing in my statement was copied directly from the C++
Standard. The Standard C Library, however is defined for C++ as the one
specified in the documents you listed.
I'm now discovering that it is available in many places on the
internet for free.


"It" -- what?


ISO/IEC 9899:1999, Programming languages - C
> Has it been superceded?


"It" -- what?


ISO/IEC 9899:1999, Programming languages - C
> Is the distribution of the
entire C Programming Language Standard being legally distrubuted without
cost?


Not AFAIK.
> I was going to buy the latest version, but I'm not sure what that
is, nor am I sure which one officially applies to C++.


Get a version of the C++ Standard and you'll know. They are listed in
section 1.2 Normative references.


ISO/IEC 9899:1999, Programming languages - C, and I will assume that is not
impacted by the Cor. 1:2001(E) and Cor. 2:2004(E). And for the library I
believe that would not include TCOR1 nor TCOR2.

http://www.open-std.org/jtc1/sc22/wg14/www/standards
> To read the C++
Standard, and take it at face value (often a dangerous proposition) I
would say what I have is the normative version.


I don't understand this statement.


I have ISO/IEC 9899:1999, Programming languages - C, but I now realize that
this is not the normative version for the Standard C Library.
Can anybody tell me what C Standard document is the correct one to use as
a reference to the latest C++ Standard?


The C++ Standard should tell you that.


Seems I need two of them. And what is worse, the C++ Standard claims that

"The following referenced documents are indispensable for the application of
this document. For dated references, only the edition cited applies. For
undated references, the latest edition of the referenced document
(including any amendments) applies.

ISO/IEC 2382 (all parts), Information technology ? Vocabulary
...."

There are about 36 of these "parts" each costing a minimum of $18US. I
suspect there is actually very little in ISO/IEC 14882:2003(E) that relies
on ISO/IEC 2382.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #3
Steven T. Hatton wrote:
Victor Bazarov wrote:

Steven T. Hatton wrote:
> I originally

assumed it was an older, or draft version. I'm pretty sure what I have
is the same ISO/IEC 9899:1999, Programming languages ? C referenced in
the C++ Standard.


Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.

The text appearing in my statement was copied directly from the C++
Standard. The Standard C Library, however is defined for C++ as the one
specified in the documents you listed.


Please cite the exact paragraph, so I can fix it. I haven't found any
reference to 9899:1999. Just, as Victor mentioned, 1990 and 1995.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 23 '05 #4
Pete Becker wrote:
Steven T. Hatton wrote:
Victor Bazarov wrote:

Steven T. Hatton wrote:

> I originally

assumed it was an older, or draft version. I'm pretty sure what I have
is the same ISO/IEC 9899:1999, Programming languages ? C referenced in
the C++ Standard.

Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.

The text appearing in my statement was copied directly from the C++
Standard. The Standard C Library, however is defined for C++ as the one
specified in the documents you listed.


Please cite the exact paragraph, so I can fix it. I haven't found any
reference to 9899:1999. Just, as Victor mentioned, 1990 and 1995.


§1.2/1

I see the references to 9899 before, and after the one I'm referring to are
to 1990 as opposed to 1999.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #5
Ian
Steven T. Hatton wrote:

Can anybody tell me what C Standard document is the correct one to use as a
reference to the latest C++ Standard?


It my not be the ISO document, but I have found "The Standard C Library"
by P J Plauger to be invaluable for this.

Don't forget the C++ standard predates C99.

Ian
Jul 23 '05 #6
Steven T. Hatton wrote:
Pete Becker wrote:
Steven T. Hatton wrote:
Victor Bazarov wrote:
Steven T. Hatton wrote:

> I originally

>assumed it was an older, or draft version. I'm pretty sure what I have
>is the same ISO/IEC 9899:1999, Programming languages ? C referenced in
>the C++ Standard.

Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.
The text appearing in my statement was copied directly from the C++
Standard. The Standard C Library, however is defined for C++ as the one
specified in the documents you listed.


Please cite the exact paragraph, so I can fix it. I haven't found any
reference to 9899:1999. Just, as Victor mentioned, 1990 and 1995.


§1.2/1

I see the references to 9899 before, and after the one I'm referring to are
to 1990 as opposed to 1999.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell


If you have the official ISO/IEC 14882:1998(E)C++ standard, you'll find
that it refers to ISO/IEC 9899:1990 in all places, including the
paragraph you're referring to.
However, if you're reading the official ISO/IEC 14882:2003(E)C++
standard, it does state the following in section 1.2:
************************************************** *************************
[intro.refs] 1.2 Normative references
The following referenced documents are indispensable for the
application of this document. For dated
references, only the edition cited applies. For undated references, the
latest edition of the referenced
document (including any amendments) applies.

ISO/IEC 2382 (all parts), Information technology - Vocabulary
ISO/IEC 9899:1999, Programming languages - C
************************************************** *************************

The 2003 version of the C++ standard only refers to 9899:1999 in the
above paragraph, and in all other sections of the standard, it refers
to the 9899:1990.
I believe this to be a type error in the 2003 version of the standard,
since the rest of the document only refers to 9899:1990.
You should use the 9899:1990 version of the C standard to validate
compliance with the C++ standard.
There are many things in the 9899:1999 version of the C standard that
are not part of the current C++ standard.

Jul 23 '05 #7
Ian wrote:
Steven T. Hatton wrote:

Can anybody tell me what C Standard document is the correct one to use as
a reference to the latest C++ Standard?
It my not be the ISO document, but I have found "The Standard C Library"
by P J Plauger to be invaluable for this.


As it turns out, it would seem that I inadvertently discovered a problem
with the C++ Standard while fumbling around for the answer to this
question. Someone has to actually look at the Standard documents from time
to time. It keeps 'm honest.

As for Plauger's book, it may be worth having on hand. When it comes to C
issues, though it may be slightly out of data, I use a book called _The C
Programming Language: /Second Edition/_ By Brian W. Kernighan and Dennis M.
Ritchie. It's usually sufficient to answer any questions I encounter. I
will observe that it's often useful to have two different reliable
references to the same subject.

I *do* believe that a C++ programmer should have the C++ Standard, ISO/IEC
14882:2003, on hand, and that he or she should read it.
Don't forget the C++ standard predates C99.


The current C++ Standard is ISO/IEC 14882:2003, but I believe it is correct
to say that it was (intended to be) based on C90.

--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #8
Steven T. Hatton wrote:
The current C++ Standard is ISO/IEC 14882:2003, but I believe it is correct
to say that it was (intended to be) based on C90.


AFAIK, ISO/IEC 14882:1998 is the official standard for C++. ISO/IEC
14882:2003 is just a draft.
Bart.

Jul 23 '05 #9
Bart wrote:
Steven T. Hatton wrote:
The current C++ Standard is ISO/IEC 14882:2003, but I believe it is
correct to say that it was (intended to be) based on C90.


AFAIK, ISO/IEC 14882:1998 is the official standard for C++. ISO/IEC
14882:2003 is just a draft.
Bart.


Well, I don't think I could FAQ you on that, but I'm pretty sure 2003 is the
current official Standard.

"Adopted by INCITS (InterNational Committee for Information Technology
Standards) as an American National Standard.

Date of ANSI Approval: 12/29/2003"

--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #10
Steven T. Hatton wrote:
Pete Becker wrote:

Steven T. Hatton wrote:
Victor Bazarov wrote:

Steven T. Hatton wrote:
> I originally

>assumed it was an older, or draft version. I'm pretty sure what I have
>is the same ISO/IEC 9899:1999, Programming languages ? C referenced in
>the C++ Standard.

Actually the C++ standard refers to ISO/IEC 9899:1990 and ISO/IEC
9899:Amd.1:1995, and not 1999.
The text appearing in my statement was copied directly from the C++
Standard. The Standard C Library, however is defined for C++ as the one
specified in the documents you listed.


Please cite the exact paragraph, so I can fix it. I haven't found any
reference to 9899:1999. Just, as Victor mentioned, 1990 and 1995.

§1.2/1

I see the references to 9899 before, and after the one I'm referring to are
to 1990 as opposed to 1999.


I don't see any mention of 9899:1999 there. My copy lists these:

— ISO/IEC 2382 (all parts), Information technology – Vocabulary
— ISO/IEC 9899:1990, Programming languages – C
— ISO/IEC 9899/Amd.1:1995, Programming languages – C, AMENDMENT 1: C
Integrity
— ISO/IEC 10646-1:1993 Information technology – Universal Multiple-Octet
Coded Character Set
(UCS) – Part 1: Architecture and Basic Multilingual Plane
--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 23 '05 #11
Bart wrote:

AFAIK, ISO/IEC 14882:1998 is the official standard for C++. ISO/IEC
14882:2003 is just a draft.


14882:2003 is the current standard.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 23 '05 #12
Pete Becker wrote:

I don't see any mention of 9899:1999 there. My copy lists these:

— ISO/IEC 2382 (all parts), Information technology – Vocabulary
— ISO/IEC 9899:1990, Programming languages – C
— ISO/IEC 9899/Amd.1:1995, Programming languages – C, AMENDMENT 1: C
Integrity
— ISO/IEC 10646-1:1993 Information technology – Universal Multiple-Octet
Coded Character Set
(UCS) – Part 1: Architecture and Basic Multilingual Plane


Whoops, I see it now. Apparently the INCITS version is different from
the ISO version.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 23 '05 #13
Axter wrote:
However, if you're reading the official ISO/IEC 14882:2003(E)C++
standard, it does state the following in section 1.2:
************************************************** *************************
[intro.refs] 1.2 Normative references
The following referenced documents are indispensable for the
application of this document. For dated
references, only the edition cited applies. For undated references, the
latest edition of the referenced
document (including any amendments) applies.

ISO/IEC 2382 (all parts), Information technology - Vocabulary
ISO/IEC 9899:1999, Programming languages - C
************************************************** *************************


Wierd: the ISO version doesn't have that, but the INCITS(ANSI) version does.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
Jul 23 '05 #14
Pete Becker wrote:
Axter wrote:
However, if you're reading the official ISO/IEC 14882:2003(E)C++
standard, it does state the following in section 1.2:
************************************************** ************************* [intro.refs] 1.2 Normative references
The following referenced documents are indispensable for the
application of this document. For dated
references, only the edition cited applies. For undated references, the
latest edition of the referenced
document (including any amendments) applies.

ISO/IEC 2382 (all parts), Information technology - Vocabulary
ISO/IEC 9899:1999, Programming languages - C
************************************************** *************************


Wierd: the ISO version doesn't have that, but the INCITS(ANSI) version
does.

"The nice thing about standards is that there are so many of them to choose
from." Andres S. Tannenbaum
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #15
Ian
Steven T. Hatton wrote:
Ian wrote:

Steven T. Hatton wrote:
Can anybody tell me what C Standard document is the correct one to use as
a reference to the latest C++ Standard?


It my not be the ISO document, but I have found "The Standard C Library"
by P J Plauger to be invaluable for this.

As it turns out, it would seem that I inadvertently discovered a problem
with the C++ Standard while fumbling around for the answer to this
question. Someone has to actually look at the Standard documents from time
to time. It keeps 'm honest.

As for Plauger's book, it may be worth having on hand. When it comes to C
issues, though it may be slightly out of data, I use a book called _The C
Programming Language: /Second Edition/_ By Brian W. Kernighan and Dennis M.
Ritchie. It's usually sufficient to answer any questions I encounter. I
will observe that it's often useful to have two different reliable
references to the same subject.

It isn't out of date wrt C++ and the C standard library. It was
published in '92, after the C standard. K&R was published in '88.

The best format for both standards is the hardcopy books available on
Amazon.

Ian
Jul 23 '05 #16
Ian wrote:
Steven T. Hatton wrote:

As it turns out, it would seem that I inadvertently discovered a problem
with the C++ Standard while fumbling around for the answer to this
question. Someone has to actually look at the Standard documents from
time
to time. It keeps 'm honest.

As for Plauger's book, it may be worth having on hand. When it comes to
C issues, though it may be slightly out of data, I use a book called _The
C Programming Language: /Second Edition/_ By Brian W. Kernighan and
Dennis M.
Ritchie. It's usually sufficient to answer any questions I encounter. I
will observe that it's often useful to have two different reliable
references to the same subject.

It isn't out of date wrt C++ and the C standard library. It was
published in '92, after the C standard. K&R was published in '88.
Sorry for my obscure writing style. I was referring to K&R being slightly
out of date.
The best format for both standards is the hardcopy books available on
Amazon.

Ian


When I read the reviews on Amazon, I decided to hold off ordering the
hardcopy of the C++ Standard. The reports indicate that it is very poorly
bound. The last thing I want is a book that falls apart in my hands simply
because I actually read it.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #17

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: lphuong | last post by:
When someone modifies a field in a table, I like to find out which field he/she changed. Currently, only the LAST person to modify an object is saved. For example, if I modify an Application...
3
by: lphuong | last post by:
When someone modifies a field in a table, I like to find out which field he/she changed. Currently, only the LAST person to modify an object is saved. For example, if I modify an Application...
19
by: Steven T. Hatton | last post by:
The short sample program listed below has some features that I find to be bad style. In particular, they fail to communicate the connection between names used in this program and the location in...
3
by: osp | last post by:
hi to every one.... i just started out with c++ and i think i am doing well.i use Robert Laffore to study. which book should i use for data structures ? please help. thank you with regards ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.