Barr Group's Embedded C Coding Standard was developed from the ground up to minimize bugs in firmware, by focusing on practical rules that keep bugs out--while also improving the maintainability and portability of embedded software. The coding standard details a set of guiding principles (more below) as well as specific naming conventions and other rules for the use of data types, functions, preprocessor macros, variables and much more. Individual rules that have been demonstrated to reduce or eliminate certain types of bugs are highlighted. 

This latest version of the coding standard, BARR-C:2018, has been fully harmonized with MISRA C and helps embedded system designers reduce defects in firmware written in C and C++. 

The book is available for purchase, in PDF or in print, here.

This section of the standard serves as an introduction and overview.


I would like to make a suggestion that a revision history of the coding standard be created and tracked. Just as our software and design documentation are (or REALLY should be) under version control, the standards that we use, especially in the medical device industry, also have revisions associated with them so we can trace compliance to a specific version of the standard. Barr Group's Embedded C Coding Standard is one of the standards we use and refer to in our company, so a revision history would be really desirable.

Mike Marks
Senior Software Design Engineer
SPR Therapeutics


We hear you. This is indeed an excellent suggestion.

To date, there have been no revisions requiring that kind of documentation. The rules in the HTML standard here are the same as those in the print/PDF book. Of course, there are also these comment exchanges--but they are not a part of the standard itself.

If we should undertake a new edition of the standard we will produce a revision history as you propose.

Michael Barr