3

如果一个人真的想把函数放在全局命名空间中,那么使用这种风格有什么好处:

#include <cfoo>
using namespace std;

或者一个人可以做

#include <foo.h>

为了相同的效果?

4

1 回答 1

2

如果“foo.h”没有“适当地准备好”用 C++ 编译,那么它在 C++ 环境中根本无法正常工作。

“cfoo” 样式的标题是为了使内容“适合” C++。旧式标题确实有效的事实主要是为了保持兼容性。

从某种意义上说,这两种解决方案都同样糟糕,因为当您后来发现您刚刚遇到名称冲突时,因此foo需要更新所有调用以使用其中一个bleh::foostd::foo确保您知道是哪一个。

但至少如果你有using namespace std,你有东西要搜索。如果您想查找所有“.h”文件,您可能会找到您自己的 .h 文件、一些“ncurses.h”和类似的文件,这些不是您要找的。

所以,总而言之,两者都不是好的解决方案,但是

#include <cfoo>; 
using namespace std;

不那么糟糕。

于 2013-08-22T22:46:35.743 回答