c++ - 如何避免函数的多重定义(Linux、GCC/G++、Code::Blocks)

标签 c++ header codeblocks

我有一个代码块项目,它使用许多不同的文件——通常是由其他程序员编写的。目前我有两个不同的子项目包含以相同方式命名的函数。比方说: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/

相关文章:

c++ - sprintf/格式化字符串可以直接传递给函数吗?

c++ - 添加预处理器 #define 以更改包含哪些 header 以及调用哪些函数

Code::Blocks 不显示任何输出

c++ - Windows 上的 Code::Blocks 13.12 即使使用 -std=c++11 也无法识别 std::codecvt

c++ - 为什么禁止对位域的非常量引用?

C++ 相同字母连续程序

c - "nested"#includes 如何在 C 中工作?

css - 我的网站标题图片未在移动设备上调整大小

c++ - 在内存中创建 GDI+ 位图,然后另存为 png

c++ - 根据它们在 C++ 中作为矩阵的位置从文件中读取数字