在我的实现中,我有一个预处理器定义,指定了 应用程序正在运行的操作系统,例如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 作为预处理器命令?
答案 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
然后你编译这两个文件。我想这将是最简单的解决方案。