具有相似功能但名称不同的头文件

Headers with similar functionality but different names

本文关键字:文件 相似 功能      更新时间:2023-10-16

我在多个平台上有共同的代码,这些代码依赖于具有某些函数名称的标头为#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>


还是别的什么?

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

实际上,我会将这两种方法结合起来。不要在代码中一遍又一遍地使用方法A,这会使维护变得困难,你应该为每个依赖于平台的头添加一个通用头,并用它来包装特定于平台的include:

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