如果一个人真的想把函数放在全局命名空间中,那么使用这种风格有什么好处:
#include <cfoo>
using namespace std;
或者一个人可以做
#include <foo.h>
为了相同的效果?
如果“foo.h”没有“适当地准备好”用 C++ 编译,那么它在 C++ 环境中根本无法正常工作。
“cfoo” 样式的标题是为了使内容“适合” C++。旧式标题确实有效的事实主要是为了保持兼容性。
从某种意义上说,这两种解决方案都同样糟糕,因为当您后来发现您刚刚遇到名称冲突时,因此foo
需要更新所有调用以使用其中一个bleh::foo
或std::foo
确保您知道是哪一个。
但至少如果你有using namespace std
,你有东西要搜索。如果您想查找所有“.h”文件,您可能会找到您自己的 .h 文件、一些“ncurses.h”和类似的文件,这些不是您要找的。
所以,总而言之,两者都不是好的解决方案,但是
#include <cfoo>;
using namespace std;
不那么糟糕。