本帖慢慢扩充……
1. 假设是实现namespace Abc中的一个class,不要因为是在.cc中就肆无忌惮的在global scope或者namespace Abc{}中定义辅助变量和函数,或者typedef、using东西。因为这些东西虽然没有在相应的header file中声明,但是如果在用户代码中有意或无意的声明了它们,那用户代码就仍可以使用它们。正确的做法是把这些不准备在别的文件中使用的东西放在global scope下的匿名名字空间中,这样它们就是file local的了,其他文件无法对其声明和使用。