Skip to main content

+1 866 653-6233 LinkedIn Software Expert Witness Directory

About Us Contact Us

Barr Group Software Experts

Barr Group Software Experts

Main navigation

  • Expert Services
    • Consulting Experts in Software and Electronics
    • Expert Reports by Testifying Software Experts
    • Reverse Engineering and Forensic Analysis
    • Software Source Code Review and Analysis
  • Areas of Expertise
    • Left Side
      • Artificial Intelligence
      • Automotive Systems
      • Cloud Computing
      • Computer Security
      • Consumer Electronics
      • Electronic Circuits
      • Enterprise Software
      • Financial Technology
      • Firmware and IoT
    • Right Side
      • Industrial Controls
      • Mechanical Design
      • Medical Devices
      • Military & Aerospace
      • Mobile Devices & Apps
      • Optical Equipment
      • Renewable Energy
      • Signal Processing
      • Telecommunications
  • Matters & Venues
    • Patent Infringement and Invalidity Experts
    • Software Copyright and Trade Secrets Experts
    • Product Liability and Failure Analysis Experts
    • Contract Disputes and Software Project Failures
    • Venues and Clients
  • Directory
  • Case Studies
    • DirecTV Anti-Piracy
    • Samsung Software Copyright
    • Toyota Runaway Cars
  • Resources
    • Expert Witness Blog
    • Source Code Review in Litigation
    • Software Source Code Discovery

1.1 Which C?

  1. Home
  2. Embedded C Coding Standard
  3. 1 General Rules
  4. 1.1 Which C?

Rules:

1.1.a. All programs shall be written to comply with the C99 version of the ISO C Programming Language Standard.3

1.1.b. Whenever a C++ compiler is used, appropriate compiler options shall be set to restrict the language to the selected version of ISO C.

1.1.c. The use of proprietary compiler language keyword extensions, #pragma, and inline assembly shall be kept to the minimum necessary to get the job done and be localized to a small number of device driver modules that interface directly to hardware.

1.1.d. Preprocessor directive #define shall not be used to alter or rename any keyword or other aspect of the programming language.

Example:

#define begin	{	// Don’t do something like this...
#define end	}	// ... nor this.
...
    for (int row = 0; row < MAX_ROWS; row++) 
    begin
        ...
    end	                // Let C be C, not some language you once loved.

Reasoning: To clearly define the rules in the rest of this standard, it is important that we first agree on the baseline programming language specification.

Enforcement: These rules shall be enforced via compiler setup and code reviews.


Footnotes

[3] C99-compatible compilers offer many valuable improvements over older compilers, such as C++-style comments, Boolean and fixed-width integer types, inline functions, and local variable declarations anywhere within a function body.

Book traversal links for 1.1 Which C?

  • ‹ 1 General Rules
  • Up
  • 1.2 Line Widths ›

Request an Expert

(866) 653-6233

Barr Group logo
Call us

Expert Services

  • Source Code Review Services
  • Expert Witness Directory
  • Reverse Engineering Services
  • Expert Reports & Testimony
  • How-To Technical Articles
  • Engineering Services

Latest Insights

  • Payment Processing and e-Payments Fraud
  • Albert Einstein Expert Witness
  • Medical Device Litigation and FDA 510(k)
  • Personality Traits of the Best Expert Witnesses

Website contents copyright © 2012-2025 by Barr Group. | Barr Group's logo is a U.S.-registered ® trademark.

SITEMAP  |  PRIVACY