![](https://i-blog.csdnimg.cn/blog_migrate/0f927e370fef7827bd719709375f93c7.png)
参考博客: https://blog.csdn.net/jxb198899/article/details/27225503
C语言命名空间分析准则:
1、在同一命名空间、相同作用域中,任何名字须具有唯一性
2、每个结构和联合内部都有自己的命名空间(独立于其他空间)
3、结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)
4、goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)
5、所有其他情况共用一个命名空间,如变量、所有枚举常量、typedef定义的别名等(独立于其他空间)
6、#define宏有点特殊,宏覆盖所有命名空间,所有和宏同名的在预处理时都会被替换为宏,只要替换后没有语法错误,这种替换就在神不知鬼不觉中进行。