Const and volatile type qualifiers

From Teknologisk videncenter
Revision as of 11:05, 31 August 2011 by Heth (talk | contribs) (Example 1)
Jump to: navigation, search

const

const means that something is not modifiable, so a data object that is declared with const as a part of its type specification must not be assigned to in any way during the run of a program.

volatile

The use of volatile ensures that the compiler always carries out the memory accesses, rather than optimizing them out (for example if the access is in a loop).

Memorymapped access to a register

Example 1

In the example below the register 32 bit register located in memory at address 0x40000 can be accessed through the uartreg pointer.

unsigned int volatile * const uartreg = (unsigned int *) 0x40000;
*uartreg |= 0x80881119;

Links