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

2024-05-03

我有一个代码块项目,它使用许多不同的文件 - 通常是由其他程序员编写的。目前我遇到的情况是,我有两个不同的子项目,其中包含以相同方式命名的函数。比方说:F(int x)。因此 F(int x) 是在两个不同位置的两个源文件中定义的,并且它们有两个不同的标头。我还为这些标头创建了两个不同的名称空间:

namespace NS1
{
 extern "C"{
  #include "header1definingF.h"
 }
}
namespace NS2
{
 extern "C"{
  #include "header2definingF.h"
 }
}

但编译器仍然抱怨它有 F(int x) 的多个定义。我如何在 Code::Blocks 中解决这个问题(在 Visual Studio 中它工作得很好)。

编辑:更清楚地说,这些标头包含 C 代码。我没想到会这么乱。有数千个源文件使用其他项目,其中又包含数千个函数......所以该怎么办。我完全不知道如何让它发挥作用。


我想知道为什么它可以在 Visual Studio 上运行,但不能在代码块上运行。这表明你确实有一个包含守卫。 做this http://wiki.codeblocks.org/index.php?title=FAQ-Compiling_%28errors%29#Q:_My_build_fails_to_link_due_to_multiple_definition_of_xyz_errors.3F help?

Project->Build options...->Linker settings (tab)
-Wl,--allow-multiple-definition
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免函数的多重定义(Linux、GCC/G++、Code::Blocks) 的相关文章

随机推荐