我在多个平台上有共同的代码,它依赖于具有某些函数名称的标题为#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>
或其他什么?
与每种方法相关的利弊是什么,在什么情况下我应该使用哪种方法?
答案 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.hpp
,platformB/common.hpp
等。