关于跨平台接口代码大家的做法是怎样的

cnyfk 发布于 2014/12/16 17:11
阅读 716
收藏 0

最近有个需求是做一个debug的工具,发命令给硬盘。
但是要求linux和windows上都能用。

界面部分可以交给QT这个没有问题,但是设计到底层接口时就会涉及到linux和windows的区别来,我现在想到的做法是定义相同的接口,但是接口的实现部分放在2个不同的cpp中,一个是cpp对应linux的实现,一个是对应windows的实现。然后将这个二个cpp include到另一个cpp文件中在这个cpp文件中通过宏来确定平台,做到不同平台下编译不同cpp文件。

说了这么多主要是想知道这种方式是否合理,大家一般都是什么方式处理跨平台的底层接口。
毕竟qt中很多特定平台下的底层接口是没有对应的api的。
比如windows下的DeviceIOControl这个API我就没有找到对应的QT调用。

我自己的实现方式如下不知道是否规范:

// interface.h
class interface
{
public:
    virtual void func() = 0;
};

// windows.cpp
#include "interface.h"
class win public: interface
{
public:
     void func(){}
};
// linux.cpp
#include "interface.h"
class linux public: interface
{
public:
   void func(){}
}

// core.cpp
#ifdef _WINDOWS
#include "windows.cpp"
#else
#include "linux.cpp"
#endif

加载中
0
淡定的wo
淡定的wo
一般的做法就是这样吧。继承+多态指针把实现和表示分离。
0
chunquedong
chunquedong

把cpp后缀名改为inc,要不然有些构建系统会把三个cpp都同时编译的。

返回顶部
顶部