我在C ++中有这个简单的代码
#include <something.h>
#include <something2.h>
int main()
{
my_function();
return 0;
}
名为my_function的函数在something.h
和something2.h
中定义如何在不编辑包含文件的情况下选择我想要使用的人?
答案 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.o
或main
中的一个,具体取决于您希望函数执行的文件。
通过链接正确的文件,您无需更改任何源代码。
extern "C"
或g++
或gcc -std=c++0x
的c ++文件,则可能必须在点声明和定义中将它们声明为gcc -std=c++11
。