如何处理标题名称冲突?

时间:2013-11-13 19:49:55

标签: c header include wrapper

如何在包含标题时处理名称冲突?

E.G:

#include "config.h" // from lib a
#include "config.h" // from lib b

我现在可以处理与类型和函数的名称冲突,如果我写一个包装器......但是如何处理这样的冲突?有没有办法为这个问题编写一个包装器?

2 个答案:

答案 0 :(得分:1)

解决此问题的一种简单方法是在引号之间包含完整的文件路径。

这样的东西
#include "/liba/inc/config.h"

另外,你没有指定你正在使用的编译器,但是这里有一个线程来处理GCC的这个完全相同的问题:How to resolve include file names conflicts in GCC?

答案 1 :(得分:1)

除了使用头文件的显式路径之外,您还可以考虑 not 在同一源文件中公开两个头文件。例如,您可以创建b_config_provider.hb_config_provider.cb_config_provider.c将包含来自库config.h的{​​{1}},并提供围绕这些工具的包装器(在b中公开包装API)。这显然有些牵连,但它最大限度地减少了潜在的冲突(以及未来的冲突)。