Take the 2-minute tour ×

Last time I checked, saying that you are coding in ANSI C was equal to say "this is C99 compliant code with nothing else in it". Now with C11 and C++11, does this distinction still remain? Does it still has some sort of meaning?

share|improve this question
C and C++ standards are ISO certified standards. –  Alok Save Jan 3 '13 at 15:32
@AlokSave ok, but ANSI it's even another organization ... –  user1849534 Jan 3 '13 at 15:33
"ANSI C" can have any number of different meanings. IMHO the only time when it had a universally recognized meaning was when it was used in contrast to K&R C. –  NPE Jan 3 '13 at 15:36
@AlokSaven since when ANSI automatically approves what ISO standardize ? –  user1849534 Jan 3 '13 at 15:37
ANSI does not automatically approve anything.I am not sure how you concluded that.My previous comment says "standardization process is integrated", ANSI participates in the the process. –  Alok Save Jan 3 '13 at 15:42

3 Answers 3

up vote 15 down vote accepted

Historically "ANSI C" was used to mean "standard C", i.e. C89, by contrast with "K&R C" and the various pre-standard variants invented by compiler-writers. That's why the 2nd Ed. of "The C Programming Language" has a big red "ANSI C" stamp on the cover.

Then for a time "ISO C" was used to mean "the new standard C", i.e. C99, by contrast with "ANSI C".

This was always a confusing usage, since both ISO and ANSI ratified both C89 and C99. ISO ratified the former as C90, and published it with some layout changes from ANSI's version but supposedly the same substantial content. So "ANSI C" always was an ISO standard, and "ISO C" always was an ANSI standard. The only difference was which body oversaw the standardization process.

Following this usage (and probably encouraging it to continue), the -ansi flag to GCC is equivalent to -std=c90. It that context it actually means "C90, plus some GNU extensions that do not conflict with the standard".

I'm not aware of "ANSI C" referring to C99, but that doesn't mean it hasn't been used to mean that.

I don't think that using the term "ANSI C" has helped anyone in the last 10 years. ANSI ratified C11, but it would not be helpful to start saying, "aha! well in that case, ANSI C suddenly now means C11!". We can certainly say that C11 is the current ANSI C standard, but nevertheless the term "ANSI C" can't be used with any reasonable expectation that people will clearly understand it to mean C11.

share|improve this answer
Where the hell do you guys get to know all this from? :| –  varevarao Jan 3 '13 at 17:31
thanks, so the best is not to use this words anymore if I have understood correctly, it's just something that can have different meaning and can only generate noise in the communication. –  user1849534 Jan 3 '13 at 17:39

Both the ISO C11 and ISO C++11 have been ratified as the new ANSI C and C++ Standards.

For example, on my ANSI copy of C11 it is written:

Adopted by INCITS (InterNational Committee for Information Technology Standards) as an American National Standard. Date of ANSI Approval: 5/23/2012

share|improve this answer
No. ANSI takes part in the ISO standardization process. –  R. Martinho Fernandes Jan 3 '13 at 15:44
@user1849534 C11 has been approved as the new ISO C Standard on December 2011, and ANSI approves it on May 2012. ISO and ANSI are two different organizations with different goals. –  ouah Jan 3 '13 at 15:45
@user1849534: ISO is international (based in Switzerland). ANSI is American (based in Washington). They can't be the same now can they? ;-) –  netcoder Jan 3 '13 at 15:46
@user1849534 You could say ANSI ∈ ISO without becoming totally wrong. –  Daniel Fischer Jan 3 '13 at 15:49
@user1849534: the current ISO C standard is the current ANSI C standard, but you can't "subtract C standard from both sides" to conclude that ISO and ANSI are the same ;-) –  Steve Jessop Jan 3 '13 at 16:08

Since currently1 3 different revisions of the C standard and "two and a half" of the C++ one are widely used, I'd say that such terminology today makes less sense than ever.

  1. Actually, at a given time there's only one "current" C (C++) standard, the last one, since it supersedes the previous versions. What I'm saying about here is that all these previous versions are still very much relevant (often more than the latest revision).
share|improve this answer
two and a half ? –  Geoffroy Jan 3 '13 at 15:35
@Geoffroy C++03 is really just a minor update of C++98. –  Gorpik Jan 3 '13 at 15:36
"Currently", there is only one ISO C standard and only one ISO C++ standard. All the others have been withdrawn by ISO and - as I understand it - by ANSI as well. –  Charles Bailey Jan 3 '13 at 15:39
@CharlesBailey: ISO and ANSI may retire whatever they want, but this doesn't change the fact that C++98/03 and C89 are still the most relevant revisions in terms of written code, and very often you have to resort to them for compatibility reasons (or because compiler writers don't care - will VC++ ever move after C89?) . Also, I have yet to see a completely conforming C++11 or C11 compiler. So, "currently" there are 4/5 standards to keep in mind. –  Matteo Italia Jan 3 '13 at 15:48
I'm not arguing with the fact that old revisions are important, but suggesting that old revisions are still "current" is a little misleading. –  Charles Bailey Jan 3 '13 at 15:54

Your Answer


