如何制作跨平台库?
How to make a cross platform Library?
我试图在 Linux 上使用 sys/socket.h 创建一个 HTTP 服务器。我想知道如何在不使用第 3 方库的情况下制作跨平台 HTTP 服务器。我只想使用本机套接字 API'S。如何根据底层操作系统编译加载特定 header 的库。就像在 windows 上加载 windows.h 和在 Linux.
上加载 sys/system.h
'traditional'方法是使用#ifdef
宏,你可以select在编译时包含哪个h文件,像这样:
#ifdef LINUX
#include <sys/platform.h>
#else
#include <windows.h>
#endif
然后你可以让编译器使用-D
选项定义正确的宏,比如-DLINUX
.
但是当 API 开始出现如此微小的差异时,这会让您很痛苦。
使用 boost 库!这些设计为独立于平台。
我试图在 Linux 上使用 sys/socket.h 创建一个 HTTP 服务器。我想知道如何在不使用第 3 方库的情况下制作跨平台 HTTP 服务器。我只想使用本机套接字 API'S。如何根据底层操作系统编译加载特定 header 的库。就像在 windows 上加载 windows.h 和在 Linux.
上加载 sys/system.h'traditional'方法是使用#ifdef
宏,你可以select在编译时包含哪个h文件,像这样:
#ifdef LINUX
#include <sys/platform.h>
#else
#include <windows.h>
#endif
然后你可以让编译器使用-D
选项定义正确的宏,比如-DLINUX
.
但是当 API 开始出现如此微小的差异时,这会让您很痛苦。
使用 boost 库!这些设计为独立于平台。