C++头文件,foo.h与cfoo
C++ headers, foo.h vs cfoo
如果人们真的想把函数放在全局命名空间中,那么使用这种风格有什么好处吗:
#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;
没有那么糟糕。
相关文章:
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 仅让特定类'Fabric'构造类'Foo'及其所有子类的实例
- 反转C++ foo(MyClass &) vs foo(const MyClass &)
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 如何实现这个函数 foo.getSize().x.
- Clearing Class Foo with new(pFoo) Foo()
- 我想知道为什么"std::unique_ptr<int> foo(新 int)"是合法的,因为"std::<int>unique_ptr"要求输入参数类型应该是"int"?
- 使用 G++ 编译时"Undefined Refrence to Foo"
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- foo(void) vs foo(void *)
- 没有用于调用 foo 的匹配函数
- 两种初始化有什么区别:Foo f();Foo f = Foo()
- 有没有办法删除传递给函数"foo(新对象())"的对象?
- std::size_t 还是 std::vector<Foo>::size_type?
- 引用函数如何"int &foo();"工作?
- 为什么int foo()是右值,而int&foo()在这个例子中是左值?
- <<找不到运算符,尽管定义了 Foo 类型的右操作数,但该运算符仍采用类型为 Foo 的右侧操作数
- 为什么海湾合作委员会抱怨"declaration of 'foo' shadows a previous call [-Werror=shadow]"
- 为什么即使"a.foo<0>();"就足够了,"a.template foo<0>();"也允许?
- C++头文件,foo.h与cfoo