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

C++ 在多个cpp文件中重新使用未命名的命名空间函数,c++,C++,目前,我有一个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

目前,我有一个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文件的匿名命名空间中定义的函数类似于私有函数。它们不能在另一个.cpp文件中重复使用

如果发现其他.cpp文件可以重用这些函数,则需要在.h文件中声明这些函数,并在相应的.cpp文件中定义这些函数

您是用Common.h、A.h还是B.h声明函数,完全取决于您自己。您发布的代码中的函数名并没有提供太多线索,说明哪个.h文件最适合包含这些声明

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

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

如果您在B.h中声明它们,我建议您在B.cpp中实现它们