我有一个代码块项目,它使用许多不同的文件——通常是由其他程序员编写的。目前我有两个不同的子项目包含以相同方式命名的函数。比方说:F(int x)。所以 F(int x) 在两个不同位置的两个源文件中定义,它们有两个不同的头文件。我还为这些 header 创建了两个不同的命名空间:
namespace NS1
{
extern "C"{
#include "header1definingF.h"
}
}
namespace NS2
{
extern "C"{
#include "header2definingF.h"
}
}
但是编译器仍然提示它有多个 F(int x) 的定义。我如何在 Code::Blocks 中解决这个问题(在 Visual Studio 中它工作得很好)。
编辑:更清楚地说,这些 header 包括 C 代码。没想到会这么乱有数以千计的源文件使用其他项目,包括数以千计的函数……那该怎么办。我完全不知道如何让它发挥作用。
最佳答案
我想知道为什么它适用于 Visual Studio,但不适用于代码块。这表明你确实有一个包含守卫。 是否this帮助?
Project->Build options...->Linker settings (tab)
-Wl,--allow-multiple-definition
关于c++ - 如何避免函数的多重定义(Linux、GCC/G++、Code::Blocks),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789895/