Name space is the scope within which an identifier must be unique. C uses four
distinct categories of identifiers:
Goto label names
These must be unique within the function in which they are declared.
Structure, union, and enumeration tags
These must be unique within the block in which they are defined. Tags declared
outside of any function must be unique.
Structure and union member names
These must be unique within the structure or union in which they are defined.
There is no restriction on the type or offset of members with the same member
name in different structures.
Variables, typedefs, functions, and enumeration members
These must be unique within the scope in which they are defined. Externally
declared identifiers must be unique among externally declared variables.
Duplicate names are legal for different name spaces regardless of scope rules.
For example:
int
blue = 73;
{
// open a block
enum
colors { black, red, green, blue, violet, white } c;
/* enumerator blue hides outer declaration of int blue */
struct
colors { int i, j; };
// ILLEGAL: colors duplicate tag
double
red = 2;
// ILLEGAL: redefinition of red
}
blue = 37;
// back in int blue scope
mikroC - C Compiler for Microchip PIC microcontrollers
mikroC
making it simple...
56
MikroElektronika: Development tools - Books - Compilers
page
NAME SPACES