指定接口的实现

时间:2009-09-04 08:27:36

标签: c interface c-preprocessor

在我的实现中,我有一个预处理器定义,指定了 应用程序正在运行的操作系统,例如OS_WIN或OS_LINUX。

在头文件中,我定义了接口,每个操作都是相同的 系统

//interface.h:

void functionA();
void functionB();

我还有每个操作系统的接口实现,例如

//windows_interface.c:

#include "interface.h"
void functionA(){
//do something in windows
}
void functionB(){
//do something in windows
}

//linux_interface.c:

#include "interface.h"
void functionA(){
//do something in linux 
}
void functionB(){
//do something in linux
}

现在最后问题;)。当设置OS_WIN预处理器时如何使用现在的windows_interface实现?当定义OS_LINUX时如何使用linux_interface.c 作为预处理器命令?

2 个答案:

答案 0 :(得分:3)

不要直接编译每个平台的C文件。而是创建一个包含

的文件interface.c.
#if OS_WIN

#include "windows_interface.c"

#elif OS_LINUX

#include "linux_interface.c"

#else

#error "Need to implement an interface for this platform!"

#endif

并编译。

或者 - 更好的是 - 不要从C代码本身内部选择要编译的C代码集 - 在脚本或控制构建的makefile中执行。

答案 1 :(得分:0)

在一个文件中,您可以使用以下代码包围整个代码:

#ifdef OS_WIN
…
#endif

和另一个:

#ifdef OS_LINUX
…
#endif

然后你编译这两个文件。我想这将是最简单的解决方案。