目前,我有一个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>
答案 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。
中实现它们