在类函数和命名空间之间重新声明符号

redeclared symbol between class function and namespace

本文关键字:声明 符号 新声明 类函数 命名空间 之间      更新时间:2023-10-16

我的makefile中有两个头文件。

一个有一个函数符号"uint32_t util::hash(const char*)",

另一个具有命名空间符号"命名空间 util::hash { }"

G++ 抱怨:

StringUtil.h:24: error: ‘uint32_t util::hash(const char*)’ redeclared as different kind of symbol
../util/hash/Hash_Interface.h:8: error: previous declaration of ‘namespace util::hash { }’

这两个文件来自其他库,所以我不能更改名称。如何解决?

您可以将其中一个头文件包含放在命名空间中,例如

namespace foo
{
#include "some_file.h"
}

现在,"some_file.h"头文件中的所有符号都位于 foo 命名空间中。