指定接口的实现

发布于 2024-08-04 01:01:10 字数 610 浏览 2 评论 0原文

在我的实现中,我有一个预处理器定义,它指定 应用程序运行所在的操作系统,例如 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泅渡 2024-08-11 01:01:10

不要直接编译每个平台的 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 中执行此操作。

Don't compile the per-platform C files directly. Instead, make a file, interface.c, which contains

#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

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.

并安 2024-08-11 01:01:10

在一个文件中用: 包围整个代码,

#ifdef OS_WIN
…
#endif

在另一个文件中用:

#ifdef OS_LINUX
…
#endif

包围整个代码,然后编译这两个文件。我认为这将是最简单的解决方案。

In one file your surround the whole code with:

#ifdef OS_WIN
…
#endif

and in the other:

#ifdef OS_LINUX
…
#endif

And then you compile both files. That would be the simplest solution, I think.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文