如何在C ++中选择具有相同名称的函数

时间:2015-12-15 13:50:22

标签: c++

我在C ++中有这个简单的代码

#include <something.h>
#include <something2.h>

int main()
{
    my_function();
    return 0;
}
名为my_function的

函数在something.hsomething2.h中定义如何在不编辑包含文件的情况下选择我想要使用的人?

2 个答案:

答案 0 :(得分:4)

一种解决方案是使用

namespace something_one
{
   #include <something.h>
}
namespace something_two
{
   #include <something2.h>
}

如果所有代码都在标题中,这很有效。

否则,您必须求助于#define,在精心设计的编译单元中实现的存根函数,或与全局命名空间污染者的强大对话。

答案 1 :(得分:0)

假设实际定义位于something.cpp(或.c)和something2.cpp(或.c),

在创建something.o应用程序可执行文件时,仅链接something2.omain中的一个,具体取决于您希望函数执行的文件。

通过链接正确的文件,您无需更改任何源代码。

  • 如果您将其编译为包含extern "C"g++gcc -std=c++0x的c ++文件,则可能必须在点声明和定义中将它们声明为gcc -std=c++11