1. Home
  2. /
  3. Misra-c-cpp
  4. /
  5. MISRA C: Rule Example (Use of const)

MISRA C: Rule Example (Use of const) - Misra-c-cpp Typing CST Test

Loading…

MISRA C: Rule Example (Use of const) — Misra-c-cpp Code

Ensures immutability of variables where possible.

/* Non-compliant */
int maxValue = 100;

/* Compliant */
const int maxValue = 100;

Misra-c-cpp Language Guide

MISRA C and MISRA C++ are coding standards developed to facilitate safety, reliability, and maintainability in embedded systems, especially in automotive, aerospace, and critical industries.

Primary Use Cases

  • ▸Automotive embedded software development
  • ▸Safety-critical avionics code
  • ▸Industrial control firmware
  • ▸Medical device software
  • ▸High-integrity and mission-critical systems

Notable Features

  • ▸Rule-based coding guidelines for C/C++
  • ▸Focus on safety, reliability, and maintainability
  • ▸Supports static analysis enforcement
  • ▸Includes both mandatory and advisory rules
  • ▸Covers C language and object-oriented C++ constructs

Origin & Creator

Created by the Motor Industry Software Reliability Association (MISRA) in 1998, initially for the automotive industry; later expanded to C++ and broader safety-critical domains.

Industrial Note

Extensively used in automotive ECUs, aerospace flight control software, industrial PLC firmware, and other high-integrity embedded systems.

Quick Explain

  • ▸MISRA provides a set of guidelines to avoid unsafe or undefined behavior in C/C++.
  • ▸Focuses on safety, portability, readability, and maintainability of code.
  • ▸Widely used in safety-critical embedded software development.
  • ▸Rules cover language usage, coding practices, and static analysis requirements.
  • ▸Adopted by automotive, aerospace, defense, and industrial sectors.

Core Features

  • ▸MISRA C: 2004 / 2012 standard rules
  • ▸MISRA C++: 2008 standard rules
  • ▸Static analysis-friendly coding practices
  • ▸Defined subsets to reduce undefined behaviors
  • ▸Guidelines for portability across compilers and platforms

Learning Path

  • ▸Learn C/C++ language basics
  • ▸Understand undefined and implementation-defined behavior
  • ▸Study MISRA C guidelines (2012 edition)
  • ▸Study MISRA C++ guidelines (2008 edition)
  • ▸Practice applying rules in embedded projects

Practical Examples

  • ▸Checking rule compliance for pointer safety
  • ▸Avoiding dynamic memory in safety-critical code
  • ▸Ensuring strict type usage to prevent overflows
  • ▸Implementing safe integer arithmetic
  • ▸Enforcing code readability and maintainability standards

Comparisons

  • ▸MISRA C vs CERT C: MISRA focuses on embedded safety, CERT on security
  • ▸MISRA C++ vs C++ Core Guidelines: MISRA is strict for critical systems, Core Guidelines are general-purpose
  • ▸MISRA C vs AUTOSAR C: MISRA is language rules, AUTOSAR provides architecture & middleware guidance
  • ▸MISRA C vs JSF++: Both target safety, MISRA more industry-wide
  • ▸MISRA vs ISO C/C++ standards: MISRA adds safety-focused constraints to standard C/C++

Strengths

  • ▸Improves code safety and robustness
  • ▸Widely recognized in safety-critical industries
  • ▸Enables consistent coding style across teams
  • ▸Facilitates static code analysis and automated compliance
  • ▸Reduces risk of undefined or dangerous behaviors

Limitations

  • ▸Learning curve for developers unfamiliar with guidelines
  • ▸Can restrict some standard C/C++ idioms
  • ▸May require additional tooling for enforcement
  • ▸Strict rules may slow initial development
  • ▸Interpretation may vary between organizations

When NOT to Use

  • ▸Prototyping or experimental projects
  • ▸Rapid application development
  • ▸Non-critical software
  • ▸Pure research or academic code
  • ▸Projects where strict safety compliance is not required

Cheat Sheet

  • ▸Rule 1.x -> Language subset
  • ▸Rule 2.x -> Expressions & types
  • ▸Rule 3.x -> Control statements
  • ▸Rule 4.x -> Functions & pointers
  • ▸Rule 5.x -> C++ OOP guidelines

FAQ

  • ▸Is MISRA mandatory? -> Depends on industry/project safety requirements.
  • ▸Does MISRA replace C coding standards? -> No, it complements them.
  • ▸Is MISRA applicable to C++? -> Yes, MISRA C++ exists.
  • ▸Are deviations allowed? -> Yes, if justified and documented.
  • ▸Does MISRA guarantee bug-free code? -> No, it reduces risk and improves safety.

30-Day Skill Plan

  • ▸Week 1: Basic rules, naming conventions, type safety
  • ▸Week 2: Pointers and memory management rules
  • ▸Week 3: Control flow and function usage rules
  • ▸Week 4: C++ OOP and template rules
  • ▸Week 5: Static analysis and deviation documentation

Final Summary

  • ▸MISRA C/C++ ensures safe, maintainable, and portable embedded code.
  • ▸Widely used in automotive, aerospace, and safety-critical systems.
  • ▸Rules can be enforced through static analysis and code reviews.
  • ▸Mandatory and advisory rules guide developers to avoid undefined behavior.
  • ▸Documentation of deviations is part of compliance best practices.

Project Structure

  • ▸Source files (.c/.cpp)
  • ▸Header files (.h/.hpp)
  • ▸Configuration files for analysis tools
  • ▸Documentation of deviations
  • ▸Test code for verification

Monetization

  • ▸Embedded software consulting
  • ▸Safety-critical software auditing
  • ▸Toolchain integration services
  • ▸Training for MISRA compliance
  • ▸Certification assistance for ISO 26262 / DO-178C

Productivity Tips

  • ▸Integrate static analysis in CI/CD
  • ▸Use code templates following MISRA
  • ▸Modularize code to simplify compliance
  • ▸Document deviations immediately
  • ▸Perform peer reviews for MISRA adherence

Basic Concepts

  • ▸Rule - a single guideline for safe coding
  • ▸Directive - a high-level recommendation
  • ▸Mandatory Rule - must always be followed
  • ▸Advisory Rule - recommended best practice
  • ▸Deviation - documented justification for violating a rule

Official Docs

  • ▸https://www.misra.org.uk
  • ▸https://www.misra.org.uk/Publications

More Misra-c-cpp Typing Exercises

MISRA C: Rule Example (Avoid Implicit Conversion)MISRA C++: Rule Example (No Dynamic Memory in Safety-Critical Code)MISRA C: Rule Example (No goto)MISRA C: Rule Example (Initialize Variables)MISRA C++: Rule Example (Avoid Multiple Inheritance)MISRA C: Rule Example (Avoid Magic Numbers)MISRA C: Rule Example (Single Point of Exit)MISRA C++: Rule Example (No Exception Handling in Safety-Critical)MISRA C: Rule Example (Boolean Expressions)

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher