C ++标题,foo.h与cfoo

时间:2013-08-22 22:36:55

标签: c++ include standards

如果实际上想要将函数放入全局命名空间,那么使用此样式是否有任何好处:

#include <cfoo>
using namespace std;

或者可以只做

#include <foo.h>

是否有相同的效果?

1 个答案:

答案 0 :(得分:2)

如果“foo.h”没有“正确准备”用C ++编译,那么它在C ++环境中就无法正常工作。

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

这两种解决方案都是同样糟糕的,因为当你后来发现自己刚刚发生了名字冲突时,所有对foo的调用都需要更新才能使用bleh::foostd::foo以确保您知道哪一个意味着什么。

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

因此,总而言之,两者都不是好的解决方案,而是

#include <cfoo>; 
using namespace std;

有点不那么糟糕。