0

我在多个平台上有通用代码,这些代码依赖于具有某些函数名称的标头#include

问题是 [或多或少] 相同的标头在每个平台上具有不同的名称。我不能简单地在任何平台上重命名标题,因为它是标准的#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>


或者是其他东西?

每种方法的优缺点是什么,在什么情况下我应该使用一种方法而不是另一种方法?

4

1 回答 1

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等。

于 2013-04-01T16:48:12.307 回答