A naming policy sets consistent rules for choosing names for every identifier: types, members, variables, enumerations, macros, functions, and function-like macros. Separate technical restrictions from semantic conventions; both affect correctness and maintainability. section 9.2
A declaration exposes naming risks
double memory_sum(size_t N, size_t I, double strip[N][I]); Names such as N, I, and strip may collide with macros, predefined meanings, implementation identifiers, or future standard-library names. A more distinctive alternative is: double p99_memory_sum(size_t p00_n, size_t p00_i, double p00_strip[p00_n][p00_i]); section 9.2
Apply these restrictions especially to identifiers visible in header files:
- Avoid names beginning with an underscore followed by another underscore or a capital letter; these are reserved for extensions and internal use. section 9.2
- Treat leading-underscore file-scope identifiers and enum, struct, and union tags as reserved. section 9.2
- Use all-capital names for macros, and avoid predefined identifiers, C library names, names beginning with str or E, and names ending in _t. section 9.2

