gpt4 book ai didi

c++ - 创建一个 OS C++ 特定的 API

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:57 25 4
gpt4 key购买 nike

我需要创建一些 API,通过调用一个函数,将调用适用于当前操作系统的正确函数。

所以我同意了:

main.cpp :

#include "api.h"
int main() {
helloWorld();
return 0;
}

API.h :

void helloWorld();

API.cpp :

void helloWorld() {
#ifdef __gnu_linux__
printf("Hello World of Linux");
#endif
#ifdef WIN32
printf("Hello World of Windows");
#endif
}

但这并不能满足我。当我有大型功能时,例如在 Linux 下获取进程的所有子进程的功能,以及许多其他功能,我将遇到空间问题,以及维护代码的可见性问题。

我尝试根据底层操作系统包含不同的头文件,但这不是很好,我不能有两个头文件(一个用于 Windows,一个用于 Linux)和只有一个 C++ 文件。

那么,你知道我如何将 Linux 和 Windows 的代码分开,所以我最终得到两个文件(一个仅适用于 Linux,一个仅适用于 Windows)和一个头文件,该头文件将具有 #ifdef条件?我无法让它工作......

最佳答案

我是通过以下方式做到的:

main.cpp 和 api.h 没有任何修改。

API.cpp:

#ifdef linux
#include "linux_api.h"
#endif
#ifdef WIN32
#include "windows_api.h"
#endif

void helloWorld() {
#ifdef linux
helloWorld_linux();
#endif
#ifdef WIN32
helloWorld_win32();
#endif
}

然后需要提供linux_api.hlinux_api.cppwindows_api.hwindows_api.cpp。优点是这四个文件已经是特定于平台的。您只需在 api.cpp 中为每个函数创建“胶水代码”。

linux_api.h:

void helloWorld_linux();

linux_api.cpp:

#include "linux_api.h"

#include <cstdio>

void helloWorld_linux()
{
std::printf( "Hello world from linux..." );
}

希望这对您有所帮助。

关于c++ - 创建一个 OS C++ 特定的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16168529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com