在多个cpp文件中重用未命名的命名空间函数

时间:2017-07-14 04:20:08

标签: c++

目前,我有一个A.cpp文件,其中有一些函数在未命名的命名空间中定义

// A.cpp

namespace {
void foo1() {}
void foo2() {}
}

现在我有另一个想要重用foo1()和foo2()的B.cpp文件。什么是最佳做法?我们为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>

1 个答案:

答案 0 :(得分:4)

.cpp文件中匿名命名空间中定义的函数类似于私有函数。它们不应该在另一个.cpp文件中重用。

如果您发现它们可以被另一个.cpp文件重用,那么这些函数需要在.h文件中声明并在相应的.cpp文件中定义。

是否在Common.h,A.h或B.h中声明函数,完全取决于您。发布的代码中的函数名称并不能说明哪个.h文件最适合包含这些声明。

如果你在Common.h中声明它们,我建议你在Common.cpp中实现它们。

如果你在A.h中声明它们,我建议你在A.cpp中实现它们。

如果你在B.h中声明它们,我建议你在B.cpp。

中实现它们