在多个 cpp 文件中重用未命名的命名空间函数
Re-use unnamed namespace functions in multiple cpp files
目前,我有一个 A.cpp 文件,其中包含在未命名命名空间中定义的一些函数
// A.cpp
namespace {
void foo1() {}
void foo2() {}
}
现在我有另一个 B.cpp 文件想要重用 foo1(( 和 foo2((。最佳实践是什么?我们是否应该为 foo1 和 foo2 创建一个新的 Common.h 文件,然后要求 A.cpp/B.cpp 包含 Common.h
// Common.h
namespace {
void foo1() {}
void foo2() {}
}
// A.cpp
#include <Common.h>
// B.cpp
#include <Common.h>
在 .cpp 文件中的匿名命名空间中定义的函数类似于私有函数。它们不应在另一个.cpp文件中重复使用。
如果发现它们可以被另一个.cpp文件重用,则需要在 .h 文件中声明这些函数,并在相应的.cpp文件中定义这些函数。
是否在 Common.h、A.h 或 B.h 中声明函数,完全取决于您。您发布的代码中的函数名称并没有提供太多关于哪个 .h 文件最适合包含这些声明的线索。
如果你在 Common.h 中声明它们,我建议你在 Common.cpp 中实现它们。
如果你在 A.h 中声明它们,我建议你在 A.cpp 中实现它们。
如果你在 B.h 中声明它们,我建议你在 B.cpp 中实现它们。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 如何访问嵌套在命名命名空间中的未命名命名空间变量?
- 编译错误:"error_category"未使用 g++ 6.3.0 命名类型"
- 函数与来自未命名命名空间的参数的链接
- 从匿名名称空间中调用命名名称空间的函数
- G++显示关于未定义命名空间的错误
- Foreward 声明在未命名命名空间中定义的类
- C++,包括未命名命名空间中的头文件
- 字段名称与使用未命名命名空间的字段类型相同
- VS2013 在未命名命名空间中遇到基类问题
- 源文件中的未命名命名空间和局部变量
- 未命名命名空间中名称的外部链接
- Xcode 标头错误 - 命名空间'_STL'未包含命名空间'_Rep'
- 如何在监视窗口中转换为未命名命名空间中的类型
- 当外部命名空间具有具有相同名称的成员时,访问未命名命名空间的成员
- 如何转发声明未命名命名空间中的类
- 定义未指定名称空间的函数指针
- 如何将数组复制到更大的数组中,并在未使用的空间中添加零?C++
- 在c++中命名命名空间的最佳方法//当名称冲突时该怎么做