6.2.3 Name spaces of identifiers

Previous Table of Contents

435 If more than one declaration of a particular identifier is visible at any point in a translation unit, the syntactic context disambiguates uses that refer to different entities.

436 Thus, there are separate name spaces for various categories of identifiers, as follows:

437 —  label names (disambiguated by the syntax of the label declaration and use);

438 —  the tags of structures, unions, and enumerations (disambiguated by following any24) of the keywords struct, union, or enum);

439 —  the members of structures or unions;

440 each structure or union has a separate name space for its members (disambiguated by the type of the expression used to access the member via the . or -> operator);

441 —  all other identifiers, called ordinary identifiers (declared in ordinary declarators or as enumeration constants).

442 Forward references: enumeration specifiers (6.7.2.2), labeled statements (6.8.1), structure and union specifiers (6.7.2.1), structure and union members (6.5.2.3), tags (6.7.2.3), the goto statement (6.8.6.1).

443 23) As specified in 6.2.1, the later declaration might hide the prior declaration.

444 24) There is only one name space for tags even though three are possible.

Next

Created at: 2005-06-29 02:18:54 The text from WG14/N1124 is copyright © ISO