0

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

例如:

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

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

4

2 回答 2

2

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

就像是

#include "/liba/inc/config.h"

此外,您没有指定您使用的编译器,但这里有一个线程可以处理与 GCC 完全相同的问题:如何解决 GCC 中的包含文件名冲突?

于 2013-11-13T19:52:58.990 回答
1

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

于 2013-11-13T20:05:09.813 回答