The const keyword shall be used whenever possible, including:

    * To declare variables that should not be changed after initialization,
    * To define call-by-reference function parameters that should not be modified (for example, char const * p_data),
    * To define fields in structs and unions that cannot be modified (such as in a struct overlay for memory-mapped I/O peripheral registers), and
    * As a strongly typed alternative to #define for numerical constants.
