- ?
-
The word is optional, even in hosted implementations, for at least one supporting standard.
- P
-
The identifier is used only as part of a
_Pragma
expression or#pragma
directive. - Q
-
The word is a type qualifier.
- S
-
The word is a storage-class specifier.
- L
-
The identifier exists even in a free-standing implementation.
- H
-
The identifier might exist even in a free-standing implementation.
[: But surely, everything not guaranteed in a free-standing implementation could potentially exist.] - M
-
The identifier is guaranteed to be a macro if defined.
- T
-
The word is used to specify a type.
- (·)
-
The identifier is a function, or a function-like macro.
- Directive
-
The word is used to form a preprocessing directive.
- +
-
The word acts as an operator.
- Native
-
The word or punctuation is native to the language, and does not require any standard header to be included before use.
- Keyword
-
The word is a keyword. Implies Native.
- Predefined
-
The identifier is not native to the language, but exists even before any standard headers have been included, under the conditions it is defined to exist.
- User-defined
-
The identifier is to be optionally defined by the user, and influences subsequent declarations in standard headers.