The ANSI-C standard is probably one of the most important tools that any embedded software developer has available to them. The ANSI C standard specifies what the C language is, its syntax, behavior and features. Despite being the foundational standard from which most embedded software on the planet is written, very few developers have actually read let alone opened the standard.
The standard, while mostly used by compiler vendors to create their compilers, is still extremely important to developers. One, if a developer has never read the standard, how do you know which capabilities are really in the language? Compiler vendors often add extensions to the language which creates code that is non-standard and not easily portable. Take for example binary notation defining a symbol as follows:
int Value = 0x00101100;
The above declaration might be legal within the compiler but it is not a construct defined within the ANSI-C standard! Binary notation is completely compiler vendor defined and specific which means that it probably won’t be portable to other compilers and should therefore be avoided.
The C language has had only three major version releases over the last 25 years. These are known as C90, C99 and C11. Unfortunately, many compiler vendors within the embedded software space still only support C90 despite some the important updates and fixes that exist in the C99 standard. The updates to C99 were well worth it and I generally will refuse to use a compiler that doesn’t support C99 (It’s been 16 years now come on!). The C11 standard still has not been implemented to any degree worth talking about within the embedded space.
The great part about the ANSI-C standard is that it is extremely affordable as far as standards go. The draft standards or working standards can be found for free by doing a google search. These drafts are nearly identical to the final ratified versions. For example, a draft version of the 2005 minor updates to C99 can be found at the following link:
For developers who prefer to have the ratified version of the standard, it costs only $60 USD through the ANSI store! That’s not much more than a nice dinner for two! The link can be found below:
Whether a developer has just started out or has been programming for decades, having a copy of the ANSI-C standard is a great way to expand your C language expertise. Reading just a small section a day will result in vast gains in knowledge over the course of a standard working year. Consider reviewing the standard as part of your knowledge expansion program.