Datasheet

- Variables
- Functions
- Types
- Arrays of other types
- Structure, union, and enumeration tags
- Structure members
- Union members
- Enumeration constants
- Statement labels
- Preprocessor macros
The recursive nature of the declarator syntax allows complex declarators. You’ll
probably want to use typedefs to improve legibility if constructing complex objects.
Lvalues
Lvalue is an object locator: an expression that designates an object. An example of
lvalue expression is
*P, where P is any expression evaluating to a non-null pointer.
A modifiable lvalue is an identifier or expression that relates to an object that can be
accessed and legally changed in memory. A const pointer to a constant, for exam-
ple, is not a modifiable lvalue. A pointer to a constant can be changed (but its deref-
erenced value cannot).
Historically,
l stood for “left”, meaning that lvalue could legally stand on the left (the
receiving end) of an assignment statement. Now only modifiable lvalues can legal-
ly stand to the left of an assignment operator. For example, if a and b are noncon-
stant integer identifiers with properly allocated memory storage, they are both mod-
ifiable lvalues, and assignments such as a = 1 and b = a + b are legal.
Rvalues
The expression a + b is not lvalue: a + b = a is illegal because the expression on
the left is not related to an object. Such expressions are sometimes called rvalues
(short for right values).
143
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Language Reference
mikroC PRO for AVR
CHAPTER 5