473,840 Members | 1,607 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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 1547
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:19 95, 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:1 995, 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:1 995, 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

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

Similar topics

3
3840
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 record, I will see "MyName" in the "tblApplications.UpdatedBy" field and the date and time I updated it. But it doesn't keep an historical record. We would like these changes to be stored in a file or a table or something. Please help
3
899
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 record, I will see "MyName" in the "tblApplications.UpdatedBy" field and the date and time I updated it. But it doesn't keep an historical record. We would like these changes to be stored in a file or a table or something. Please help
19
2215
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 which they are declared and or defined. I'd like to know if there are any features of this code you believe represents bad programming technique. How would the feature be better implemented? /* * The Apache Software License, Version 1.1 *
3
2323
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 osp
0
9860
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, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10922
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10660
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10301
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 protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7838
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5685
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5874
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
4076
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3138
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.