指定接口的实现
在我的实现中,我有一个预处理器定义,它指定 应用程序运行所在的操作系统,例如 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 作为预处理器命令?
In my implementation I have a preprocessor definition that specifies the
operating system the application is running on, e.g. OS_WIN or OS_LINUX.
In a header file, I have defined the interface, that is the same for each operating
system.
//interface.h:
void functionA();
void functionB();
I also have the implementations for the interface for each operating system, e.g.
//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
}
And now finally the question ;). How can I use now windows_interface implementation when OS_WIN preprocessor is set and how can I use linux_interface.c when OS_LINUX is defined
as preprocessor command?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要直接编译每个平台的 C 文件。相反,创建一个文件,interface.c,其中包含
并编译该文件。
或者 - 更好的是 - 不要从 C 代码本身内部选择要编译的 C 代码集 - 在控制构建的脚本或 makefile 中执行此操作。
Don't compile the per-platform C files directly. Instead, make a file, interface.c, which contains
and compile that.
Alternatively - and better still - don't select which set of C code to compile from inside the C code itself - do it in the script or makefile that's controlling the build.
在一个文件中用: 包围整个代码,
在另一个文件中用:
包围整个代码,然后编译这两个文件。我认为这将是最简单的解决方案。
In one file your surround the whole code with:
and in the other:
And then you compile both files. That would be the simplest solution, I think.