In C, a namespace is a naming domain in which identifiers for different kinds of entities can follow separate collision rules. The language has tangled namespaces covering types, structure and union members, variables, enumerations, macros, functions, and function-like macros. section 9.2
A seemingly safe declaration
double memory_sum(size_t N, size_t I, double strip[N][I]); looks local and readable, but N may collide with a macro, I with a name from complex.h, strip with an implementation library name, and memory_sum with a future standard type name. section 9.2
TAKEAWAY: Keep the probability of naming conflicts low by exposing as few names as possible. Interfaces should expose only types and functions that belong to the application programming interface. section 9.2



















