具有类似功能但名称不同的标头

时间:2013-04-01 16:29:37

标签: c++ header cross-platform

我在多个平台上有共同的代码,它依赖于具有某些函数名称的标题为#include d。

问题是[或多或少]相同的标题在每个平台上都有不同的名称。我不能简单地在任何平台上重命名标头,因为它是标准#include。保持这种共性的推荐方法是什么?

#ifdef PLATFORM_A
   #include <platformA>
#endif

#ifdef PLATFORM_B
   #include <platformB>
#endif

//....

标头遮罩

通用代码:

#include "common.h"

平台A的“common.h”:

#include <platformA>

平台B的“common.h”:

#include <platformB>


或其他什么?

与每种方法相关的利弊是什么,在什么情况下我应该使用哪种方法?

1 个答案:

答案 0 :(得分:0)

实际上,我将这两种方法结合起来。代替在代码中反复使用方法A,使维护变得困难,您应该为每个标头添加一个通用标头,这是与平台相关的,并使用它来包装特定于平台的包括:

<强> common_iostream.hpp:

#ifndef COMMON_IOSTREAM_INC
#define COMMON_IOSTREAM_INC

#ifdef PLATFORM_A
#include <iostream>
#endif

#ifdef PLATFORM_B
#include <iostream.h>
#endif

#endif

通过这种方式,您可以获得一组很好的common_*.hpp标头,并且您的代码保持干净,而且您没有将其拆分为不同的platformA/common.hppplatformB/common.hpp等。